# 老司机 iOS 周报 #367 | 2026-03-30

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

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

## 文章

### 🐕 [用好你的 jj - 重新思考 Agent 时代的版本控制](https://onevcat.com/2026/03/jj-for-agent-era/)

[@阿权](https://github.com/bqlin)：文章是 onevcat（喵神）安利 [jj（Jujutsu）](https://github.com/jj-vcs/jj) 在 AI Agent 时代替代 Git 进行本地版本控制。jj 是可与 Git 无缝兼容的本地版本控制工具（兼容方式为远端仍是 Git 提交），核心优势在于以 change 为核心，无 staging area 等中间态，操作直观，完美适配 AI Agent “先生成后整理”的工作模式，无需开发者打断业务思考指挥版本操作，比 Git 更适合 Agent 参与的本地开发。

### 🐎 [Copy-On-Write in Swift: Semantics, Misconceptions, and a Custom Implementation](https://livsycode.com/swift/copy-on-write-in-swift-semantics-misconceptions-and-a-custom-implementation/)

[@Barney](https://github.com/BarneyZhaoooo)：这篇文章把 Swift 中的 Copy-on-Write 讲得很清楚，重点不是重复 “值类型修改时会复制” 这类结论，而是澄清 COW 只是某些类型选择采用的实现策略，并不是所有 `struct` 天生自带的机制。作者先从“值类型外壳 + 引用类型存储”的经典结构切入，说明标准库集合为什么能同时兼顾值语义和复制成本；再结合 `isKnownUniquelyReferenced(_:)` 展示写入前如何判断底层存储是否需要分离，并用一个自定义 `SharedBuffer` 例子串起完整实现。后半部分还补充了 `_read` / `_modify` accessor 在减少额外复制上的作用，以及自定义 COW 真正值得引入的场景：数据量大、复制频繁、读多写少且又希望保留值语义。对需要设计高性能数据结构的同学，这是一篇兼顾原理和落地实现的好文章。

### 🐎 [OpenMAIC](https://github.com/THU-MAIC/OpenMAIC)

[@JonyFang](https://github.com/jonyfang)：OpenMAIC（Open Multi-Agent Interactive Classroom）是清华开源的 AI 互动课堂平台，能够将任意主题或文档一键转化为沉浸式学习体验。核心亮点包括：多智能体协作（AI 老师 + AI 同学实时授课讨论）、丰富场景类型（幻灯片、测验、HTML 交互模拟、项目制学习）、白板语音实时讲解，以及 OpenClaw 集成支持在飞书、Slack、Telegram 等 20+ 聊天应用中直接生成课堂。项目支持 Vercel 一键部署和 Docker 本地运行，兼容主流 LLM 服务商，开箱即用。

### 🐕 [Array expression trailing closures in Swift](https://livsycode.com/swift/array-expression-trailing-closures-in-swift/)

[@Smallfly](https://github.com/iostalks)：这篇文章深入解析了 SE-0508 提案带来的 Swift 语法改进，解决了数组与字典类型长期存在的尾随闭包使用限制，让语言一致性与 API 设计灵活性得到显著提升。核心亮点包括：

**历史痛点解决**：此前 Swift 解析器因 `[T]` 和 `[K:V]` 的语法歧义，禁止在数组 / 字典类型表达式后使用尾随闭包，导致自定义初始化器（如 builder 风格、`@resultBuilder` API）必须使用 `.init` 或 `Array<T>` 形式，破坏代码简洁性。SE-0508 移除该限制，允许 `[String] { ... }` 这类符合直觉的语法。

**API 设计赋能**：库作者现在可以为数组 / 字典设计更自然的 DSL 风格 API，比如基于 `@resultBuilder` 的集合初始化器、流式生成数组的构造函数，语法与自定义类型保持统一，降低开发者学习成本。

**扩展交互能力**：支持与 `callAsFunction` 特性结合，实现数组字面量后直接接闭包的转换操作（如 `["a","b"] { $0.uppercased() }`），进一步提升代码表达力。

**语言一致性提升**：消除了集合类型与自定义类型在尾随闭包语法上的差异，让 Swift 语言的语法规则更统一，同时仅存在极窄的兼容性影响，整体是小而美的语法优化。

这个提案虽然没有引入新的 runtime 特性，但通过平滑语法边缘，为开发者带来更符合直觉的编码体验，尤其对依赖闭包初始化的集合 API 场景帮助显著。

### 🐎 [Xcode 26 Compilation Cache](https://livsycode.com/best-practices/xcode-26-compilation-cache/)

[@david-clang](https://github.com/david-clang)：Xcode 26 Compilation Cache 的根本目标不仅是让编译器提速 5%，而是彻底停止重复已完成的工作。相比缺乏复用能力的 DerivedData，新机制在输入源未变时会直接提取缓存。这在切换分支、清理重建及高频 CI 场景下，能免去大量无谓的编译损耗。当然，若项目真正的瓶颈在于资源处理或繁杂的脚本，它也并非一劳永逸的银弹。

### 🐎 [Testing with Event Streams](https://www.massicotte.org/blog/testing-event-stream/)

[@AidenRao](https://weibo.com/AidenRao)：这篇文章讲的是把一批“靠回调驱动的异步测试”从 XCTest 迁移到 Swift Testing 时，如何既验证回调**是否发生**，又验证**发生顺序**。作者对比了 `XCTestExpectation`、Swift Testing 的 `confirmation`（容易写成层层嵌套且难区分顺序），最终给出一个很实用的解法：用 `AsyncStream` 把回调事件“汇总成事件流”，再在测试里收集并断言事件序列，顺手还封装了一个小型 `EventStream` wrapper 来减少样板代码。

## 工具

### [App-Store-Connect-CLI](https://asccli.sh/)

asc-cli 是一款强大的 App Store Connect 命令行工具。相比于 Fastlane 庞大的体系，它更加聚焦且现代。直接调用 Apple 官方的 App Store Connect API，提供简洁的命令来处理从 Beta 邀请到内购项创建的所有杂活。

最重要的是，它不需要你懂 Ruby，没有复杂的环境配置。 对于追求极致简洁、想在终端或 CI 环境中快速调动 App Store 能力的开发者来说，这是一款足以取代 Fastlane 大部分功能的利器。

## 代码

### 🐕 [MotionEyes](https://github.com/edwardsanchez/MotionEyes)

[@Cooper Chen](https://github.com/cjlcooper)：MotionEyes 是一个面向 AI Agent 的 SwiftUI 动画可观测性工具，它将原本“只能靠肉眼判断”的 UI 动画行为，转化为可量化、可分析的结构化数据。通过在应用中插入轻量级 tracing（如位置、几何、滚动等），开发者可以实时记录动画过程，并以时间序列日志形式还原真实运动轨迹。

项目的亮点在于其“ agent-first ”设计：不仅提供底层埋点能力，还配套自动化调试 workflow 和视觉分析工具，能够生成关键帧、网格标注、像素差异等结果，帮助精确定位动画异常。

相比传统调试方式，MotionEyes 更像一个“动画黑盒分析仪”，适用于排查错位、卡顿、时序错误等复杂 UI 问题。对于构建高质量交互动效或探索 AI 辅助开发流程的团队来说，这是一个非常有前瞻性的基础设施工具。

## 内推

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

具体信息请移步：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）
