普通视图

发现新文章,点击刷新页面。
昨天 — 2026年3月29日iOS 老司机

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

作者 ChengzhiHuang
2026年3月29日 22:21

ios-weekly
老司机 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)必须使用 .initArray<T> 形式,破坏代码简洁性。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-CLI

asc-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)

昨天以前iOS 老司机

老司机 iOS 周报 #366 | 2026-03-16

作者 ChengzhiHuang
2026年3月15日 20:50

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

对中国 App Store 的 iOS 及 iPadOS 的调整

26 年 3 月 15 日(消费者权益保护日)起,大陆 iAP 的抽成从 30% -> 25%,小开发者与小程序的抽成从 15% -> 12% 。抽成降低是大势所趋,毕竟其他地区还允许侧载等。同时 Google Play 商店的抽成也将从 30% -> 20% 。

Let's Vision 26 大会

今年的 Let's Vision 大会将在 3 月 28~29 日在上海漕河泾举办,会有大量嘉宾莅临,对详情感兴趣可以查看推送次条,通过链接购买有优惠券提供。我们也将在评论区抽出 5 张展览票(22 日开奖)。

文章

一文读懂 Agent Tools,拒绝复杂化、碎片化、黑盒化

@EyreFree:文章先从类型安全、LLM 友好接口、自我修复、人工介入、性能优化五大维度,讲解高可用 Agent Tools 的设计要点与方法;针对企业落地中工具碎片化、复杂化、黑盒化痛点,演示了依赖火山引擎 AgentKit 解决这类问题的方式,其 Gateway 可高效将存量 API 转为 MCP 工具,搭配企业级 Skills 管理与零信任鉴权体系,实现工具的高效治理与安全调用;还结合零售、金融科技行业实战案例。正在开发这类业务的同学可以参考。

🐎 Designing Swift Errors for an SDK

@Smallfly:这篇文章把 SDK 错误设计讲得很实用,提出用 struct + Code enum 组合来同时保证「错误码稳定」与「错误信息可读」。文中覆盖 LocalizedErrorCustomNSError、模式匹配 catch 和上下文 userInfo 的完整实践,既方便客户端做分支处理,也方便监控系统长期追踪。对团队来说,这是一套很适合沉淀为工程规范的错误治理方案。

🐎 Reverse Masking in SwiftUI Using Blend Modes

@Kyle-Ye: 文章介绍了在 SwiftUI 中实现反向遮罩的技巧——从视图中"挖出"形状以露出底层内容。核心方案是利用 .destinationOut blend mode 配合 .compositingGroup() 修饰符,将遮罩形状覆盖的区域从目标视图中擦除。文章封装了一个简洁的 reversedMask View 扩展,无需借助 Core Graphics 即可实现诸如毛玻璃镂空、网格卡片符号裁切等富有层次感的 UI 效果。对 SwiftUI 自定义视觉效果感兴趣的开发者值得一读。

🐎 vPhone 虚拟 iOS 环境解析与风控防御实践

@Damien: 研究员 wh1te4ever 利用苹果私有 Virtualization.framework 和 PCC 固件中的隐藏组件,在 Apple Silicon Mac 上实现了拥有 root 权限的 iOS 26 虚拟机(vphone)。与传统越狱不同,vphone 没有 Cydia 等文件特征,能透明绕过传统风控检测,且支持批量克隆和快照回滚,对黑产构成规模化威胁。为应对此挑战,作者提出 CloudPhoneRiskKit 3.0 四层防御体系,通过硬件指纹识别、多路径一致性校验、IMU 传感器行为熵分析和服务端动态策略进行纵深防御。该体系的核心思想是不追求单一"不可绕过"的检测,而是让攻击者的 patch 行为本身成为最强的风险信号,构建"绕过成本大于收益"的防御机制。

🐎 Apple 的 ANE 被挖掘,AI 硬件公开,宣传的 38 TOPS 居然是个"数字游戏"?

@david-clangmaderix/ANE 通过逆向私有 API,绕过 CoreML 框架,直接在 ANE 上进行神经网络的训练和推理调用,发现 ANE 宣传的 38 TOPS 实为 INT8 反量化至 FP16 的“数字游戏”。

maderix 经测试发现 ANE 本质上是一个内置约 32MB SRAM 的“卷积加速器”。1x1 卷积能走“专用超车道”,而矩阵乘法只能走低效的“备用通道”,导致两者吞吐量相差 3 倍。此外,ANE 的 16 个核心是基于深度流水线设计的,因此一次性打包提交包含数十个操作的“计算图”远比提交单个操作效率高。

另外,ANE 拥有极为强悍的硬件级电源门控(Power Gating)技术,它在空闲状态下,并非进入低功耗待机模式,而是做到完全断电、零泄漏,功耗为绝对的 0mW,这也解释了其在移动端设备上极佳的能效表现。有趣的是,可以看到 XNU 内核源码(osfmk/mach/coalition.h)也定义了 ane_energy_nj 字段统计 ANE 能耗。

代码

iOS-Accessibility-Agent-Skill

@含笑饮砒霜:这个仓库主要是把 iOS 无障碍开发经验,整理成一个可供 AI 调用的“专家型 Skill ”,帮助 AI 更专业地给出 UIKit / SwiftUI 的无障碍实现建议、测试建议和设计判断。 它最大的价值不是“自动修复 accessibility ”,而是让 AI 回答这类问题时更像一个有经验的 iOS Accessibility reviewer。

SwiftUI-Agent-Skill

@zhangferry:这个仓库是由 Swift 领域知名开发者 Paul Hudson(Hacking with Swift 博主)开源的 SwiftUI Pro Agent Skill 插件,主要功能是为 Agent 提供专业的 SwiftUI 开发能力。它主要包括这些能力:无障碍功能适配;使用规范 API 并能替换 deprecated API;基于 HIG 设计规范;导航功能设计规范;高性能的 SwiftUI 代码;数据流设计和管理的规范;视图结构和动画实现技巧。

如果使用 Claude 或 Codex 命令行工具仅执行安装指令就够了,如果是 Xcode(26.3 或以上) 还稍微有些特别。当前 Xcode 内的 Agent 仅 Codex 可以识别全局 Skill,Claude 的话还需要在 ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig 这个目录下新建一个 skills 文件夹,手动把对应的 Skill 内容复制过去才能生效。

HealthQL

@阿权:HealthQL 是一款开源 Swift 库,简化 Apple HealthKit 数据查询:支持 SQL 语法和 Swift DSL(类型安全、链式调用)两种查询方式,覆盖步数、心率等常见健康数据,支持聚合、分组等操作,可通过 Swift Package Manager 安装,避免原生 HealthKit 的繁琐样板代码。

FabBar

@Barney:这是一个面向 iOS 26 Liquid Glass 风格的自定义 Tab Bar 组件,重点不只是“做得像”,而是补上系统 Tab Bar 无法优雅承载悬浮主操作按钮的问题。作者指出,把 FAB 硬塞成一个 .search tab 虽然实现简单,但会带来语义错误、VoiceOver 识别不准,以及状态切换时的交互竞态。这个库对外提供 SwiftUI 接口,内部借助 UISegmentedControl 复用原生玻璃态反馈,再补齐悬浮按钮、安全区适配、重复点击回调和按状态隐藏等能力。代价是实现依赖 UIKit 私有层级细节,未来系统更新后可能失效,部分原生无障碍行为也难做到完全一致。适合想跟进 iOS 26 视觉风格,同时又对底部主操作入口有更强控制需求的项目参考。

内推

重新开始更新「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)

❌
❌