# 老司机 iOS 周报 #345 | 2025-08-04

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/345.jpg?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

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

## 新闻

### [App Store Connect 中的年龄分级现已更新](https://developer.apple.com/cn/news/?id=ks775ehf)

苹果在 iOS 26 及以后的商店中更新了更细化的年龄分级，在现有的 4+ 和 9+ 分级的基础上，更新后的年龄分级系统新增了三个分级：13+、16+ 和 18+。苹果已经向开发者发送了邮件提醒需要完成新的年龄分级调查问卷。大家可以按需填写更新分级。

分级的截止日期为 2026 年 1 月 13 日。

## 新手推荐

### 🐎 [Deciding between 'let' and 'var' for Swift struct properties](https://www.swiftbysundell.com/articles/let-vs-var-for-swift-struct-properties/)

[@阿权](https://github.com/bqlin)：文章围绕 Swift 结构体中 let 与 var 的最佳实践与注意事项展开，内容如下：

1. 结构体的可变性规则
   1. 可变性遵循“整体不可变则部分也不可变”规则（即使属性使用 var 声明）。
   2. var 声明的实例仅 var 属性可变，let 属性始终不可变。
2. let 的使用场景
   1. 唯一 id 属性：一旦创建就不应改变，始终确保实例全局唯一的场景。
   2. 依赖初始化的属性：值初始化完成后，后续无需改变的场景。
   3. 声明为 let，表达了本质不可变的语义，避免了意外修改，也保证了数据一致性。
3. var 的使用场景
   1. 状态属性：需随业务逻辑动态更新。
   2. 依赖属性：值需依赖外部条件刷新。
4. 语义表达
   1. 两者的使用应更多考虑语义的表达，使其自文档性，let 暗示着永久不可变，var 暗示着可动态调整。
   2. 应管控 var 的使用，可提升代码的可预测性。

合理使用 let 与 var 能提升代码安全性、可读性和可维护性，也是 Swift 结构体设计的核心原则。

### 🐎 [New Watch](https://david-smith.org/blog/2025/07/22/new-watch/)  

[@Kyle-Ye](https://github.com/Kyle-Ye)：一篇 watchOS UI 设计语言变迁的实践记录与设计取舍思考，推荐给关注 watchOS 适配与视觉一致性的开发者。

## 文章

### 🐕 [A Peek into My Debugging Process (With Real Examples)](https://www.polpiella.dev/how-i-fix-bugs-in-my-apps/)
[@Smallfly](https://github.com/iostalks)：这篇文章通过三个真实案例，分享了 iOS 开发者在实际项目中调试应用的完整流程，涵盖崩溃、性能回归与意外系统提示三类常见问题。核心调试策略包括：

- **崩溃排查**：结合崩溃日志（含 SwiftUI/AppKit 内部调用栈）、Diagnostics 工具定位网络失败上下文，用 Proxyman 模拟请求失败复现问题，最终通过调整 UI 布局（`HStack` 改 `overlay`）解决。
- **性能优化**：利用 Xcode Instruments 的 Time Profiler 发现串行网络请求，通过 Swift 结构化并发（`async let` 并行任务）提升加载效率。
- **系统提示溯源**：通过注释初始化代码、本地克隆第三方库，定位到 `ProcessInfo().hostName` 调用触发网络权限提示，最终通过库代码替换修复。

文章强调「调试时间主要花在定位而非修复」，系统掌握工具（崩溃日志、Proxyman、Instruments）与方法（二分排查、上下文分析）是提升效率的关键，为开发者提供了可复用的调试实践参考。

### 🐕 [ChatGPT in Xcode 26: there ’ s a hidden prompt!](https://www.swiftwithvincent.com/blog/chatgpt-in-xcode-26-theres-a-hidden-prompt)
[@AidenRao](https://weibo.com/AidenRao)：Xcode 26 内置了 ChatGPT 功能，并在对话开始前注入一个隐藏提示词，用于优化 AI 编程助手的输出质量与安全性。了解提示的内容可以让我们更好地理解 ChatGPT 可以访问哪些信息以及苹果给出了什么上下文。

### 🐕 [Combine and Swift Concurrency: A threading risk](https://www.avanderlee.com/concurrency/combine-and-swift-concurrency-a-threading-risk/)

[@Barney](https://github.com/BarneyZhaoooo)：这篇文章探讨了从 Combine 迁移到 Swift Concurrency 过程中的线程安全风险。

**核心问题：** 作者在 RocketSim 项目升级到 Swift 6.2 严格并发模式后发现，使用 `Combine` 观察通知并调用 `@MainActor` 标记的方法时，当通知从非主线程发出会导致崩溃。

**关键风险：** `Combine` 的 `sink` 闭包缺乏编译时线程安全检查，而直接使用 `NotificationCenter` 的 `addObserver` 方法则会在编译时报错。这种隐蔽性使得问题只在运行时暴露。

**解决方案：** 推荐迁移到 `Swift Concurrency` 的 `for await` 语法观察通知，获得编译时安全保障。对于必须保留的 `Combine` 管道，建议在 `sink` 内使用 `Task` 包装或通过 `receive(on:)` 指定执行队列。

总结：`Combine` 与 `Swift Concurrency` 混用存在隐性线程风险，应优先迁移到纯 `Swift Concurrency` 方案。

### 🐎 [My 10 Tips for Using Claude Code](https://samwize.com/2025/07/08/my-10-tips-for-using-claude-code/)

[@david-clang](https://github.com/david-clang)：这篇文章总结了作者使用 Claude Code 的 10 个高效技巧，推荐给想提升 Claude 使用效率的开发者。包括自定义 Slash 命令、自动生成 commit 信息等加快开发效率的技巧，还有使用 ccusage 统计工具去监控 token 成本的技巧。

## 代码

### [Foundation Models Framework Example](https://github.com/rudrankriyam/Foundation-Models-Framework-Example)

[@zhangferry](zhangferry.com)：该仓库是 Foundation Models 框架的示例演示，除了基本能力：基础聊天、结构化数据生成、流式响应、Tools 调用的示例，还提供了基于这些能力打造的几个示例应用：语音相关的 AI 应用、健康数据分析的 AI 应用、Pokemon 分析的 AI 应用，作者还把常用的 Tools 封装成了一个 [Tools](https://github.com/rudrankriyam/FoundationModelsTools) 库。

Foundation Models 的优势在于本地执行、隐私保证、原生 API，一切看似很美好，但使用前别忘了这些限制：系统版本 26+ 且设备支持 Apple Intelligence。

## 内推

重新开始更新「iOS 靠谱内推专题」，整理了最近明确在招人的岗位，供大家参考

- [北京 / 深圳] 抖音基础技术 - 代码分析方向 - iOS 资深研发工程师
- [上海] BiliBili - 移动端开发实习生（社区生态）- iOS/Android

具体信息请移步：https://www.yuque.com/iosalliance/article/bhutav 进行查看（如有招聘需求请联系 iTDriverr）

## 关注我们

我们是「老司机技术周报」，一个持续追求精品 iOS 内容的技术公众号，欢迎关注。

**关注有礼，关注【老司机技术周报】，回复「2024」，领取 2024 及往年内参**

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 说明

🚧 表示需某工具，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
