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

Wait 5 sec.

老司机 iOS 周报,只为你呈现有价值的信息。你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。文章🐕 用好你的 jj - 重新思考 Agent 时代的版本控制@阿权:文章是 onevcat(喵神)安利 jj(Jujutsu) 在 AI Agent 时代替代 Git 进行本地版本控制。jj 是可与 Git 无缝兼容的本地版本控制工具(兼容方式为远端仍是 Git 提交),核心优势在于以 change 为核心,无 staging area 等中间态,操作直观,完美适配 AI Agent “先生成后整理”的工作模式,无需开发者打断业务思考指挥版本操作,比 Git 更适合 Agent 参与的本地开发。🐎 Copy-On-Write in Swift: Semantics, Misconceptions, and a Custom Implementation@Barney:这篇文章把 Swift 中的 Copy-on-Write 讲得很清楚,重点不是重复 “值类型修改时会复制” 这类结论,而是澄清 COW 只是某些类型选择采用的实现策略,并不是所有 struct 天生自带的机制。作者先从“值类型外壳 + 引用类型存储”的经典结构切入,说明标准库集合为什么能同时兼顾值语义和复制成本;再结合 isKnownUniquelyReferenced(_:) 展示写入前如何判断底层存储是否需要分离,并用一个自定义 SharedBuffer 例子串起完整实现。后半部分还补充了 _read / _modify accessor 在减少额外复制上的作用,以及自定义 COW 真正值得引入的场景:数据量大、复制频繁、读多写少且又希望保留值语义。对需要设计高性能数据结构的同学,这是一篇兼顾原理和落地实现的好文章。🐎 OpenMAIC@JonyFang:OpenMAIC(Open Multi-Agent Interactive Classroom)是清华开源的 AI 互动课堂平台,能够将任意主题或文档一键转化为沉浸式学习体验。核心亮点包括:多智能体协作(AI 老师 + AI 同学实时授课讨论)、丰富场景类型(幻灯片、测验、HTML 交互模拟、项目制学习)、白板语音实时讲解,以及 OpenClaw 集成支持在飞书、Slack、Telegram 等 20+ 聊天应用中直接生成课堂。项目支持 Vercel 一键部署和 Docker 本地运行,兼容主流 LLM 服务商,开箱即用。🐕 Array expression trailing closures in Swift@Smallfly:这篇文章深入解析了 SE-0508 提案带来的 Swift 语法改进,解决了数组与字典类型长期存在的尾随闭包使用限制,让语言一致性与 API 设计灵活性得到显著提升。核心亮点包括:历史痛点解决:此前 Swift 解析器因 [T] 和 [K:V] 的语法歧义,禁止在数组 / 字典类型表达式后使用尾随闭包,导致自定义初始化器(如 builder 风格、@resultBuilder API)必须使用 .init 或 Array 形式,破坏代码简洁性。SE-0508 移除该限制,允许 [String] { ... } 这类符合直觉的语法。API 设计赋能:库作者现在可以为数组 / 字典设计更自然的 DSL 风格 API,比如基于 @resultBuilder 的集合初始化器、流式生成数组的构造函数,语法与自定义类型保持统一,降低开发者学习成本。扩展交互能力:支持与 callAsFunction 特性结合,实现数组字面量后直接接闭包的转换操作(如 ["a","b"] { $0.uppercased() }),进一步提升代码表达力。语言一致性提升:消除了集合类型与自定义类型在尾随闭包语法上的差异,让 Swift 语言的语法规则更统一,同时仅存在极窄的兼容性影响,整体是小而美的语法优化。这个提案虽然没有引入新的 runtime 特性,但通过平滑语法边缘,为开发者带来更符合直觉的编码体验,尤其对依赖闭包初始化的集合 API 场景帮助显著。🐎 Xcode 26 Compilation Cache@david-clang:Xcode 26 Compilation Cache 的根本目标不仅是让编译器提速 5%,而是彻底停止重复已完成的工作。相比缺乏复用能力的 DerivedData,新机制在输入源未变时会直接提取缓存。这在切换分支、清理重建及高频 CI 场景下,能免去大量无谓的编译损耗。当然,若项目真正的瓶颈在于资源处理或繁杂的脚本,它也并非一劳永逸的银弹。🐎 Testing with Event Streams@AidenRao:这篇文章讲的是把一批“靠回调驱动的异步测试”从 XCTest 迁移到 Swift Testing 时,如何既验证回调是否发生,又验证发生顺序。作者对比了 XCTestExpectation、Swift Testing 的 confirmation(容易写成层层嵌套且难区分顺序),最终给出一个很实用的解法:用 AsyncStream 把回调事件“汇总成事件流”,再在测试里收集并断言事件序列,顺手还封装了一个小型 EventStream wrapper 来减少样板代码。工具App-Store-Connect-CLIasc-cli 是一款强大的 App Store Connect 命令行工具。相比于 Fastlane 庞大的体系,它更加聚焦且现代。直接调用 Apple 官方的 App Store Connect API,提供简洁的命令来处理从 Beta 邀请到内购项创建的所有杂活。最重要的是,它不需要你懂 Ruby,没有复杂的环境配置。 对于追求极致简洁、想在终端或 CI 环境中快速调动 App Store 能力的开发者来说,这是一款足以取代 Fastlane 大部分功能的利器。代码🐕 MotionEyes@Cooper Chen:MotionEyes 是一个面向 AI Agent 的 SwiftUI 动画可观测性工具,它将原本“只能靠肉眼判断”的 UI 动画行为,转化为可量化、可分析的结构化数据。通过在应用中插入轻量级 tracing(如位置、几何、滚动等),开发者可以实时记录动画过程,并以时间序列日志形式还原真实运动轨迹。项目的亮点在于其“ agent-first ”设计:不仅提供底层埋点能力,还配套自动化调试 workflow 和视觉分析工具,能够生成关键帧、网格标注、像素差异等结果,帮助精确定位动画异常。相比传统调试方式,MotionEyes 更像一个“动画黑盒分析仪”,适用于排查错位、卡顿、时序错误等复杂 UI 问题。对于构建高质量交互动效或探索 AI 辅助开发流程的团队来说,这是一个非常有前瞻性的基础设施工具。内推重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)关注我们我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。说明🚧 表示需某工具,🌟 表示编辑推荐预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)