Skip to content

Commit a5d25c9

Browse files
committed
feat: 340 期发布前整理 & 341 期创建
1 parent 40af22b commit a5d25c9

File tree

2 files changed

+126
-87
lines changed

2 files changed

+126
-87
lines changed

Reports/2025/#340-2025.06.30.md

Lines changed: 27 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,40 @@
55

66
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
77

8-
## 新闻
8+
## 文章
99

10-
> 行业相关的新闻、趣事、看法
10+
### 🌟 🐢 [btrace 3.0 对外开源:重磅新增 iOS 支持!免插桩原理大揭秘!](https://github.com/bytedance/btrace/blob/master/INTRODUCTION.zh-CN.MD)
1111

12-
##  Developer - 设计开发加速器
12+
[@JonyFang](https://github.com/JonyFang): btrace 是字节开源的一款高性能 Android/iOS 端性能追踪(Tracing)工具,基于 Perfetto 进行数据展示。它能够详细记录方法的调用过程,精准分析耗时,并归因性能瓶颈,兼具高采样精度和低性能损耗。与 Apple 的 Time Profiler 等传统工具相比,btrace 更加灵活、可自定义,并支持系统方法追踪、有丰富的数据归因和可视化能力,能帮助开发者深入理解和优化 App 性能。
1313

14-
> 设计开发加速器相关活动
14+
btrace 3.0 相比 2.0 的优化(iOS 视角):
1515

16-
## 新手推荐
16+
1. 采集方案升级。
17+
3.0 由单一编译期插桩,升级为“同步抓栈 + 异步抓栈”的混合采样方案。同步抓栈通过 hook 高频系统方法和关键节点,实时采集 Trace 数据;异步抓栈则通过独立采样线程定时回溯线程调用栈,保证采集的时间连续性。相比 2.0,3.0 大幅降低了接入和维护成本,采集更全面、对系统方法也支持更好。
1718

18-
> 收集一些对新手友好且质量不错的文章
19+
2. 数据存储与压缩优化。
20+
3.0 针对 Trace 数据量大、存储压力大等问题,设计了高效的调用栈去重与压缩结构。通过空间相似性(调用栈公共前缀合并)、时间相似性(连续相同栈合并)等手段,进一步减少内存和磁盘占用,提升了大体量数据下的可用性。
1921

20-
## 文章
22+
3. 多线程与性能再提升。
23+
3.0 优化了多线程数据写入的并发安全性与性能,采用 CAS 等无锁 / 低锁技术,兼顾高性能与数据一致性,在复杂多线程场景下依然保持低开销。
24+
25+
4. 死锁规避与线程采样精细化。
26+
异步采样时规避了 Time Profiler 可能导致的死锁风险,通过黑名单和信号安全 API 控制,提升了工具的稳定性。同时,仅采集活跃线程,有效降低了对 App 性能的影响。
27+
28+
5. 丰富的性能归因与可视化。
29+
除了基本的方法调用追踪,3.0 进一步支持 CPU 时间、对象分配、缺页 / 上下文切换、线程阻塞等多维度的耗时归因,配合 Perfetto 可视化,帮助开发者一站式定位性能瓶颈。
30+
31+
6. 易用性和生态提升。
32+
3.0 极大简化了接入流程,无需业务侧代码大改,无侵入式支持线上场景,支持性能自动诊断和多端(Android/iOS/ 鸿蒙 /Web)扩展,生态愈发完善。
33+
34+
整体来看,btrace 3.0 对 iOS 开发者而言,是一款集高性能、易用性、灵活性于一体的专业 Trace 工具。相比 2.0,3.0 大幅优化了采集方式、性能、安全性和数据分析能力,适合需要深入性能调优、线上问题定位和日常性能治理使用,推荐纳入工程实践!
2135

22-
> 写的不错的技术博客,包含但不局限于 iOS、多端统一、设计、产品等
2336

2437
### 🐕 [避免在 Swift 中使用 `self.`](https://juejin.cn/post/7508668930896412722)
2538

2639
[@AidenRao](https://weibo.com/AidenRao):这篇文章探讨了在 Swift 开发中避免不必要的 `self.` 前缀使用,利用编译器检查减少循环引用风险。它基于 Swift 5.3(SE-0269)和 5.8(SE-0365)的演进,在闭包中省略 `self.` 能让编译器强制捕获语义(如使用 `[weak self]`),从而暴露潜在内存泄漏问题。
2740

28-
### 🐕 [Why Ive Filed Over 1,000 Apple Feedbacks — And Why You Should Too](https://www.linkedin.com/pulse/why-ive-filed-over-1000-apple-feedbacks-you-should-too-eric-dorphy-qfe8c/)
41+
### 🐕 [Why Ive Filed Over 1,000 Apple Feedbacks — And Why You Should Too](https://www.linkedin.com/pulse/why-ive-filed-over-1000-apple-feedbacks-you-should-too-eric-dorphy-qfe8c/)
2942

3043
[@阿权](https://github.com/bqlin):文章分享了作者关于 Apple Feedback 的心得体会与收益:
3144

@@ -34,7 +47,7 @@
3447
2. 对开发者而言,可以理清技术思路、记录测试用例,形成可复用的技术文档;提升沟通能力,强化对平台的理解,甚至在撰写反馈过程中解决问题。
3548
2. 有效提交反馈的策略:
3649
1. 内容结构化:
37-
1. 标题:包含框架名和关键词(如 “生产问题”“测试版”),例:“HealthKit: 锻炼会话中 paddleSports 的 totalDistance 弃用导致数据保存失败”。
50+
1. 标题:包含框架名和关键词(如 “生产问题”“测试版”),例:“ HealthKit: 锻炼会话中 paddleSports 的 totalDistance 弃用导致数据保存失败”。
3851
2. 内容:遵循 “问题描述→预期→复现步骤→重要性→示例项目” 结构,附日志、截图或 sysdiagnose 文件。
3952
2. 高优场景:
4053
1. 生产环境漏洞、重大回归、影响广泛的 API 问题;
@@ -53,96 +66,23 @@
5366
* 代码理解:使用 SEARCH 工具(函数调用)获取代码相关上下文,再丢给 LLM
5467
* 代码生成:除了代码本身,还会查找项目依赖,学习其 API
5568

56-
### 🐢 [深入解析|Cursor编程实践经验分享](https://mp.weixin.qq.com/s/UQPcxiV4UsTxpPYRjaNZIA)
57-
58-
[@Cooper Chen](https://github.com/cjlcooper):本文深度剖析AI编程助手 Cursor 的进阶使用方法,为开发者提供一套可落地的效率提升方案:
59-
60-
1.Prompt 设计黄金法则
61-
62-
- 采用"目标-背景-约束"三段式结构
63-
- 技术方案设计阶段明确禁止生成代码
64-
- 单测生成时附带示例代码确保风格统一
65-
66-
2.Rules 规范引擎
67-
68-
- 自动生成项目专属开发规范(支持 Go/Java 等)
69-
- 中间件调用错误率降低至 0.3%
70-
- 通过"/"命令快速适配团队规范
71-
72-
3.工具链整合方案
73-
74-
- 复杂需求使用 AutoGPT 进行任务分解
75-
- 技术调研调用 Claude 深度研究模式
76-
- 钉钉文档直接解析免去格式转换
77-
78-
本文提供的技术方案设计模板和开发规范 Rules 可直接复用,帮助开发者快速建立 AI 辅助编程工作流。文中揭示的"代码生成+架构决策"分层协作模式,为现代软件开发提供了高效的智能解决方案。
79-
8069
### 🐕 [Flutter 又双叒叕可以在 iOS 26 的真机上 hotload 运行了,来看看又是什么黑科技](https://mp.weixin.qq.com/s/jGqJFTlLqF2N_rqVdSkLKQ)
8170

82-
[@Damien](https://github.com/ZengyiMa):由于iOS 26 beta1 禁止了 Debug 时 mprotect 的 RX 权限,导致 Flutte r在iOS 26真机上 Debug 运行时出现了问题。为了解决这一问题,Flutter 团队采用了一种临时方案,即创建了 NOTIFY_DEBUGGER_ABOUT_RX_PAGES 函数。当 Flutter 应用需要执行新代码时,该函数会暂停应用并通知调试器,调试器随后利用其特权,通过 debugserver 修改内存权限,实现“双地址映射”,其中一个地址用于写入代码,另一个地址用于执行代码。这一方案虽然解决了当前的运行问题,但存在一定的延迟和较高的环境要求,未来仍需开发高性能的 Debug 解释器来提供更完善的解决方案。
83-
84-
### 🐢 [btrace 3.0 对外开源:重磅新增 iOS 支持!免插桩原理大揭秘!](https://github.com/bytedance/btrace/blob/master/INTRODUCTION.zh-CN.MD)
85-
86-
[@JonyFang](https://github.com/JonyFang): btrace 是字节开源的一款高性能 Android/iOS 端性能追踪(Tracing)工具,基于 Perfetto 进行数据展示。它能够详细记录方法的调用过程,精准分析耗时,并归因性能瓶颈,兼具高采样精度和低性能损耗。与 Apple 的 Time Profiler 等传统工具相比,btrace 更加灵活、可自定义,并支持系统方法追踪、有丰富的数据归因和可视化能力,能帮助开发者深入理解和优化 App 性能。
87-
88-
btrace 3.0 相比 2.0 的优化(iOS 视角):
89-
90-
1. 采集方案升级。
91-
3.0 由单一编译期插桩,升级为“同步抓栈+异步抓栈”的混合采样方案。同步抓栈通过 hook 高频系统方法和关键节点,实时采集 Trace 数据;异步抓栈则通过独立采样线程定时回溯线程调用栈,保证采集的时间连续性。相比 2.0,3.0 大幅降低了接入和维护成本,采集更全面、对系统方法也支持更好。
92-
93-
2. 数据存储与压缩优化。
94-
3.0 针对 Trace 数据量大、存储压力大等问题,设计了高效的调用栈去重与压缩结构。通过空间相似性(调用栈公共前缀合并)、时间相似性(连续相同栈合并)等手段,进一步减少内存和磁盘占用,提升了大体量数据下的可用性。
95-
96-
3. 多线程与性能再提升。
97-
3.0 优化了多线程数据写入的并发安全性与性能,采用 CAS 等无锁/低锁技术,兼顾高性能与数据一致性,在复杂多线程场景下依然保持低开销。
98-
99-
4. 死锁规避与线程采样精细化。
100-
异步采样时规避了 Time Profiler 可能导致的死锁风险,通过黑名单和信号安全 API 控制,提升了工具的稳定性。同时,仅采集活跃线程,有效降低了对 App 性能的影响。
101-
102-
5. 丰富的性能归因与可视化。
103-
除了基本的方法调用追踪,3.0 进一步支持 CPU 时间、对象分配、缺页/上下文切换、线程阻塞等多维度的耗时归因,配合 Perfetto 可视化,帮助开发者一站式定位性能瓶颈。
104-
105-
6. 易用性和生态提升。
106-
3.0 极大简化了接入流程,无需业务侧代码大改,无侵入式支持线上场景,支持性能自动诊断和多端(Android/iOS/鸿蒙/Web)扩展,生态愈发完善。
107-
108-
整体来看,btrace 3.0 对 iOS 开发者而言,是一款集高性能、易用性、灵活性于一体的专业 Trace 工具。相比 2.0,3.0 大幅优化了采集方式、性能、安全性和数据分析能力,适合需要深入性能调优、线上问题定位和日常性能治理使用,推荐纳入工程实践!
109-
110-
### 🐕 [https://github.com/EFPrefix/EFQRCode](https://github.com/EFPrefix/EFQRCode)
111-
112-
[@Barney](https://github.com/BarneyZhaoooo)`EFQRCode` 是一个轻量级纯 `Swift` 二维码库,支持生成带水印/图标的风格化二维码和图片识别功能。基于 `CoreGraphics``CoreImage``ImageIO`,全平台支持 `iOS/macOS/watchOS/tvOS/visionOS` 。最新 7.0.0 版本重构了 `API`,引入 `EFQRCodeGenerator``EFQRCodeRecognizer` 类,支持链式配置,改进 `Objective-C` 兼容性。可通过 `CocoaPods``Carthage``SPM` 集成。
113-
114-
### 🐕 [Flutter 里的像素对齐问题,深入理解为什么界面有时候会出现诡异的细线?](https://mp.weixin.qq.com/s/eESwYV6tfXP-zeygHObCrw)
115-
116-
[@david-clang](https://github.com/david-clang):Flutter 界面中出现的诡异细线,本质原因是:
117-
118-
1. 逻辑像素到物理像素转换出现浮点值(非整数 DPR、布局误差)。
119-
2. Skia 默认开启 AAA(Analytic Anti-Aliasing)抗锯齿处理,处理相邻同色元素时各自计算的像素覆盖率总和可能不足 100%(如 40% + 50% = 90%)。
120-
3. 未被覆盖的剩余部分(如上例的 10%)会显露背景色,形成半透明的细线。
121-
122-
解决方案是:
123-
124-
1. [pixel_snap](https://pub.dev/packages/pixel_snap):提前将逻辑像素换算物理像素,根本上避免转换后出现物理像素不对齐。
125-
2. Impeller: MSAA(Multisample Anti-Aliasing)抗锯齿处理,通过在每个像素内部采样多个点来获得更准确的边缘渲染效果,使那些原本因浮点误差产生的“半像素边缘”更加平滑自然,从而视觉上弱化或隐藏了细线问题。
126-
127-
## 工具
128-
129-
> 开发过程中常用的工具,及一些新工具的介绍
71+
[@Damien](https://github.com/ZengyiMa):由于 iOS 26 beta1 禁止了 Debug 时 mprotect 的 RX 权限,导致 Flutte 在 iOS 26 真机上 Debug 运行时出现了问题。为了解决这一问题,Flutter 团队采用了一种临时方案,即创建了 NOTIFY_DEBUGGER_ABOUT_RX_PAGES 函数。当 Flutter 应用需要执行新代码时,该函数会暂停应用并通知调试器,调试器随后利用其特权,通过 debugserver 修改内存权限,实现“双地址映射”,其中一个地址用于写入代码,另一个地址用于执行代码。这一方案虽然解决了当前的运行问题,但存在一定的延迟和较高的环境要求,未来仍需开发高性能的 Debug 解释器来提供更完善的解决方案。
13072

13173
## 代码
13274

133-
> 库,代码段,开源app
134-
135-
##
75+
### 🐕 [EFQRCode](https://github.com/EFPrefix/EFQRCode)
13676

137-
> 比较不错的书的推荐和书评
77+
[@Barney](https://github.com/BarneyZhaoooo)`EFQRCode` 是一个轻量级纯 `Swift` 二维码库,支持生成带水印 / 图标的风格化二维码和图片识别功能。基于 `CoreGraphics``CoreImage``ImageIO`,全平台支持 `iOS/macOS/watchOS/tvOS/visionOS` 。最新 7.0.0 版本重构了 `API`,引入 `EFQRCodeGenerator``EFQRCodeRecognizer` 类,支持链式配置,改进 `Objective-C` 兼容性。可通过 `CocoaPods``Carthage``SPM` 集成。
13878

13979
## 音视频
14080

14181
### 🐢 [SwiftData versus SQL Query Builder]([https://juejin.cn/post/7508668930896412722](https://www.pointfree.co/blog/posts/174-free-episode-swiftdata-versus-sql-query-builder))
14282

14383
[@Kyle-Ye](https://github.com/Kyle-Ye): Point-Free 团队在 WWDC 2025 期间免费放送了一期重磅视频,深入对比 SwiftData 与他们自家 SQL Query Builder(Structured Queries)在实际开发中的表现。视频以还原 Apple Reminders 复杂查询为例,展示了两种方案在代码简洁性、可组合性和类型安全等方面的差异。
14484

145-
Structured Queries 方案只需 23 行代码即可线性表达复杂查询逻辑,支持类型安全、可读性强;而 SwiftData 不仅写法更繁琐(32 行),还存在布尔和枚举类型无法直接排序/筛选、可选字段排序不灵活等问题,甚至有些写法在运行时会直接崩溃。
85+
Structured Queries 方案只需 23 行代码即可线性表达复杂查询逻辑,支持类型安全、可读性强;而 SwiftData 不仅写法更繁琐(32 行),还存在布尔和枚举类型无法直接排序 / 筛选、可选字段排序不灵活等问题,甚至有些写法在运行时会直接崩溃。
14686

14787
如果你关心 Swift 持久化方案、数据层架构,或在 SwiftData 和 SQL 之间犹豫,强烈建议观看本期视频。
14888

Reports/2025/#341-2025.07.07.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# 老司机 iOS 周报 #341 | 2025-07-07
2+
3+
![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/302.jpg?raw=true)
4+
老司机 iOS 周报,只为你呈现有价值的信息。
5+
6+
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。
7+
8+
## 新闻
9+
10+
> 行业相关的新闻、趣事、看法
11+
12+
##  Developer - 设计开发加速器
13+
14+
> 设计开发加速器相关活动
15+
16+
## 新手推荐
17+
18+
> 收集一些对新手友好且质量不错的文章
19+
20+
## 文章
21+
22+
> 写的不错的技术博客,包含但不局限于 iOS、多端统一、设计、产品等
23+
24+
### 🐢 [深入解析| Cursor 编程实践经验分享](https://mp.weixin.qq.com/s/UQPcxiV4UsTxpPYRjaNZIA)
25+
26+
[@Cooper Chen](https://github.com/cjlcooper):本文深度剖析 AI 编程助手 Cursor 的进阶使用方法,为开发者提供一套可落地的效率提升方案:
27+
28+
1.Prompt 设计黄金法则
29+
30+
- 采用"目标-背景-约束"三段式结构
31+
- 技术方案设计阶段明确禁止生成代码
32+
- 单测生成时附带示例代码确保风格统一
33+
34+
2.Rules 规范引擎
35+
36+
- 自动生成项目专属开发规范(支持 Go/Java 等)
37+
- 中间件调用错误率降低至 0.3%
38+
- 通过"/"命令快速适配团队规范
39+
40+
3.工具链整合方案
41+
42+
- 复杂需求使用 AutoGPT 进行任务分解
43+
- 技术调研调用 Claude 深度研究模式
44+
- 钉钉文档直接解析免去格式转换
45+
46+
本文提供的技术方案设计模板和开发规范 Rules 可直接复用,帮助开发者快速建立 AI 辅助编程工作流。文中揭示的"代码生成 + 架构决策"分层协作模式,为现代软件开发提供了高效的智能解决方案。
47+
48+
49+
### 🐕 [Flutter 里的像素对齐问题,深入理解为什么界面有时候会出现诡异的细线?](https://mp.weixin.qq.com/s/eESwYV6tfXP-zeygHObCrw)
50+
51+
[@david-clang](https://github.com/david-clang):Flutter 界面中出现的诡异细线,本质原因是:
52+
53+
1. 逻辑像素到物理像素转换出现浮点值(非整数 DPR、布局误差)。
54+
2. Skia 默认开启 AAA(Analytic Anti-Aliasing)抗锯齿处理,处理相邻同色元素时各自计算的像素覆盖率总和可能不足 100%(如 40% + 50% = 90%)。
55+
3. 未被覆盖的剩余部分(如上例的 10%)会显露背景色,形成半透明的细线。
56+
57+
解决方案是:
58+
59+
1. [pixel_snap](https://pub.dev/packages/pixel_snap):提前将逻辑像素换算物理像素,根本上避免转换后出现物理像素不对齐。
60+
2. Impeller: MSAA(Multisample Anti-Aliasing)抗锯齿处理,通过在每个像素内部采样多个点来获得更准确的边缘渲染效果,使那些原本因浮点误差产生的“半像素边缘”更加平滑自然,从而视觉上弱化或隐藏了细线问题。
61+
62+
63+
## 工具
64+
65+
> 开发过程中常用的工具,及一些新工具的介绍
66+
67+
## 代码
68+
69+
> 库,代码段,开源app
70+
71+
##
72+
73+
> 比较不错的书的推荐和书评
74+
75+
## 音视频
76+
77+
> 比较不错的书的推荐和书评
78+
79+
## 内推
80+
81+
重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考
82+
83+
具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)
84+
85+
## 关注我们
86+
87+
我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
88+
89+
**关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参**
90+
91+
![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)
92+
93+
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom
94+
95+
## 说明
96+
97+
🚧 表示需某工具,🌟 表示编辑推荐
98+
99+
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

0 commit comments

Comments
 (0)