# 老司机 iOS 周报 #359 | 2025-12-01

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

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

## 文章

### 🌟 🐕 [从「写代码」到「验代码」：AI 搭档写走 3 年，我踩出来的协作路线图](https://yousali.com/posts/20251124-how-to-coding-with-ai/)

[@JonyFang](https://github.com/JonyFang): 这篇文章给我的最大启发是：AI Coding 的价值，不在于让你更快写代码，而在于让你反思、重构「整个工程流程／协作方式」。

把 AI 当成一台「超级写代码机」很容易：但如果你这样想，就容易陷入“生成–调试–纠错–折腾–没效率”的恶性循环。相反，把 AI 当成「半自动化助理 + 智能实习生」，并在团队层面投入标准化 + 自动化 + 质量流程建设 -- 才是值得的、可持续的生产力提升路径。

### 🐕 [Open source case study: Listening to our users](https://www.pointfree.co/blog/posts/189-open-source-case-study-listening-to-our-users)

[@Barney](https://github.com/BarneyZhaoooo)：文章强调了开源软件相较于 Apple 官方框架的核心优势：与用户的紧密互动。通过 SQLiteData 库的三个案例，用户驱动的功能定制、社区贡献的工具改进、快速修复的共享 bug，充分说明了活跃维护者的价值所在。开源库能在数小时到数周内响应用户需求，无需等待 WWDC 或新版本发布，这种敏捷迭代的开发模式，正是第三方库相比官方框架最值得信赖的地方。

### 🐎 [A deep dive into notifications and messages on iOS 26](https://www.nutrient.io/blog/notification-center/)

[@极速男孩](https://github.com/ztlyyznf001)：这篇文章分析了 iOS 26 的新消息（Message）API。它作为传统 NotificationCenter 的替代品，提供了编译时的类型安全和并发安全保证，解决了旧 API（如闭包式）易出错的问题。

文章详细对比了新旧 API，并重点介绍了新 API（如 MainActorMessage）的优势。一个关键特性是，新旧 API 可以“桥接”互通，允许开发者逐步迁移。尽管新 API 在观察时获取具体发送者上有限制，但仍是未来的首选方案。

### 🐎 [When To Kill A Project](https://blog.jacobstechtavern.com/p/when-to-kill-a-project)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：这篇文章是《War Stories》系列访谈的一部分，聚焦 iOS 领域知名开发者戴夫・弗沃（Dave Verwer）30 年职业生涯中的项目经验，核心围绕 “何时该终止一个项目” 展开，通过多个真实案例分享了成功与失败带来的关键启示。戴夫的经验本质上围绕 “理性决策” 展开：无论是失败的项目（及时止损、诚信负责）、误判市场的项目（重视真实需求调研），还是完成使命的成功项目（主动退出），核心都是 “聚焦有价值的部分，砍掉无效投入”。同时，信任、社区协作和对行业趋势的预判，也是项目决策中不可或缺的因素。

### 🐢 [How to Build Scalable White-Label iOS Apps: From Multi-Target to Modular Architecture](https://swiftandmemes.com/how-to-build-scalable-white-label-ios-apps-from-multi-target-to-modular-architecture/)

[@AidenRao](https://weibo.com/AidenRao)：白标 iOS 应用是一个可重用的应用模板，可以针对多个客户 / 品牌进行定制和重新包装。本文探讨了 iOS 白标 App 的架构演进之路，从多 Target 方案的维护困境出发，深入讲解了如何借助模块化思想，通过有效的依赖与配置管理，构建一个更具可维护性与可扩展性的统一代码库。

### 🐎 [Task Identity](https://chris.eidhof.nl/post/swiftui-task-identity/)

[极速男孩](https://github.com/ztlyyznf001)：文章指出 SwiftUI .task 的常见陷阱：它默认只在视图出现时运行，不会自动响应属性变化。若 View 的入参更新，Task 不会重跑，导致数据不同步。解决方案是使用 .task(id: 依赖项)。通过显式绑定依赖（如 url），当值变化时，SwiftUI 会自动取消旧任务并重启新任务，确保副作用逻辑与最新状态保持一致。

### 🐎 [Pitfalls of Parameterized Tests](https://swiftology.io/articles/pitfalls-of-parameterized-tests/ )

[@david-clang](https://github.com/david-clang)：本文分享了 Swift Testing 中参数化测试的五大常见陷阱，并提出了关键的最佳实践。其核心思想是：应在测试数据中预先建立清晰的“输入-输出”映射关系，并使用预定义的静态值作为期望结果，从根本上避免测试逻辑与实现逻辑的耦合。

### 🐎 [ScrollView snapping in SwiftUI](https://nilcoalescing.com/blog/ScrollViewSnappingInSwiftUI/)

[@DylanYang](https://github.com/Dylan19Yang)：作者向我们介绍了在 SwiftUI 中如何通过设置 scrollTargetBehavior 来调整 ScrollView 滑动的目标位置，除了我们在 UIKit 中熟知的按页滑动 .paging 选项外，还有 .viewAligned 选项允许我们按照 view 的尺寸来决定滑动的终点。文中有较多动图展示，感兴趣的读者可以阅读本文了解更详细的信息。

### 🐎 [Building Peer-to-Peer Sessions: Advertising and Browsing Devices](https://www.createwithswift.com/building-peer-to-peer-sessions-advertising-and-browsing-devices/)

[@Damien](https://github.com/ZengyiMa)：文章详解用 Multipeer Connectivity 框架实现 iOS 近场通信：配置权限、初始化 PeerSessionManager，用 MCNearbyServiceAdvertiser 广播自身并自动接受连接，同时用 MCNearbyServiceBrowser 发现与维护设备列表，附完整 Swift 源码展示如何整合广告、浏览、会话管理等功能，实现设备间的加密点对点通信。

## 工具

### [Mole：像鼹鼠一样深入挖掘来清理你的 Mac](https://github.com/tw93/Mole)

[@EyreFree](https://github.com/EyreFree)：Mole 是一款面向 macOS 系统的工具，可以大概理解为是 CleanMyMac + AppCleaner + DaisyDisk + Sensei + iStat 的聚合，主要作用如下：

- 系统状态监控：通过 `mo status` 命令提供交互式仪表盘，实时展示 CPU、内存、磁盘、网络等系统关键指标，支持 Vim 风格导航操作；
- 系统清理功能：可安全清理系统缓存，提供 `--dry-run` 预览模式和白名单管理功能，降低误删风险，还支持通过 `mo touchid` 启用 Touch ID 授权 `sudo` 操作；
- 磁盘分析能力：借助 `mo analyze` 命令分析磁盘占用情况，帮助识别大文件和缓存条目，便于用户释放存储空间。

对于需要管理 macOS 系统资源、进行系统清理或监控的团队成员来说，Mole 是一个实用的工具选择。

### 🐎 [30 分钟解决 Claude 封号问题：程序员的终极自救指南](https://yousali.com/posts/20250715-how-to-pick-and-build-the-vps-svc/)

[@阿权](https://github.com/bqlin)：文章详细介绍如何通过自建 VPS 解决 Claude 封号问题，包含完整的服务器搭建、客户端配置和开发工具设置步骤，让你稳定使用 Claude Code 等 AI 开发工具。

关键解决的痛点是：IP 不纯净。使用公共代理（机场 / VPN）易触发 Claude 风控封号。解决思路也很简单：自建 VPS。

## 代码

### 🐎 [MachOSwiftSection: 🔬 A Swift library for parsing mach-o files to obtain Swift information.](https://github.com/MxIris-Reverse-Engineering/MachOSwiftSection)

[@Kyle-Ye](https://github.com/Kyle-Ye): MachOSwiftSection 是一个用于解析 Mach-O 文件并提取 Swift 元数据信息的 Swift 库。它基于 MachOKit 扩展实现 , 可以从编译后的二进制文件中提取协议描述符（Protocol Descriptors）、协议遵循关系（Protocol Conformance）和类型上下文描述符（Type Context Descriptors）等核心信息。该库同时提供了 Swift 包和命令行工具 `swift-section`，支持对二进制文件进行多架构分析和信息导出。对于需要进行逆向工程、安全分析或从编译产物生成 Swift 接口文件的开发者来说，这是一个实用的底层工具。

## 内推

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

- [北京/上海] 京东 - 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）
