ARTICLE · 1089486
老司机 iOS 周报 #380| 2026-09-28
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐕 Apple Reference Image[1]
@阿权:Apple Reference Image[2] 是 iPhone18 Pro 的特供功能,用于密码学验证照片是真实相机传感器拍摄,对抗 AI 伪造图片,同时保护用户隐私,不暴露拍摄者身份。
基本原理:
设备定期预取加密时间戳做时间下限,拍完照片再拿第二个时间戳做时间上限,把两个时间戳与传感器原始数据一起签名保存,生成安全数字底片; 用户操作生成参考图像,底片上传苹果 PCC 私有云,在可审计安全环境完成图像处理; 处理完成由苹果签名服务签名输出参考图像;支持单张照片、整台传感器全部凭证的吊销撤销。
这项技术不会用公开凭证把多张照片追溯绑定到同一个拍摄设备(避免用于用户追踪),兼顾可验证真实性与用户隐私。
🐢 Inside iOS 27's Reworked Stub Islands[3]
@Smallfly:文章从反汇编角度分析 iOS 27 在 dyld_shared_cache 中对 stub islands 的调整:移除冗余 __auth_stubs、合并 Objective-C 元数据,并引入新的跳板编码方式来减少内存加载和指针认证开销。适合关注 dyld、Objective-C runtime、二进制优化和 Apple 平台性能细节的读者。
🐕 In-House Over-the-Air Localizations in a Modular iOS App[4]
@EyreFree:本文介绍 Just Eat Takeaway 团队为大型模块化 iOS App 自研的 OTA 远程本地化方案,实现不发版即可修复翻译、迭代文案。方案不重新实现语言匹配逻辑,充分复用系统 Bundle 的多语言降级、复数规则能力;客户端为无依赖轻量模块,各业务模块仅需一行改动接入。服务端由 CI 打包各模块资源包,经 CDN 分发,依靠哈希校验与原子文件替换,避免出现损坏、部分更新的资源包。更新在后台拉取,仅冷启动时生效,还配备完整关闭开关。文章同时列举被否决的各类备选方案,给出 SwiftLint、日志监控等落地保障手段,对多模块大型 iOS 项目本地化优化具备参考价值。
🐕 arm64e.x1: Apple's Checked Pointer Arithmetic Slice[5]
@Damien:Apple 在 Xcode 27 中新增了 arm64e.x1 架构切片,只在 A20 Pro、M6、S11 及以后的芯片上启用。编译器会把指针加法换成 addpt 指令,利用 CPA2 硬件检查指针运算是否溢出到存放 MTE 内存标签的最高字节,一旦溢出就让程序崩溃,从而堵住绕过内存标签保护的漏洞。开启它需要同时打开四个开关,作者建议同时产出 arm64 arm64e arm64e.x1 三个切片;大多数代码不用改,但本来就有指针运算 bug 的代码会崩。
🐎 The new JSON project format in Xcode 27.2[6]
@david-clang:Xcode 27.2 开始,项目配置可以从传统的 project.pbxproj 切换为 JSON 格式的 project.xcproj,这不是一次构建能力升级,而是一次面向 Git 协作、代码审查和项目可维护性的基础设施改造。传统 .pbxproj 是由大量随机 ID 组成的扁平对象图,新增一个 Swift 文件,通常会同时改动文件引用、编译条目、分组和 Build Phase 等多个区域;两位开发者在不同分支各加一个文件,也可能造成无意义的合并冲突。.xcproj 用层级化 JSON 表达相同信息:
文件直接嵌套在所属 group 中; 通过 target-membership 标记编译归属; 仅 target、产品等必要对象保留 ID; 公共 Build Settings 只保存一次,Debug / Release 的差异用条件键表达。
.xcproj 的优点是:配置更短、diff 更可读、冲突范围更小,也更容易审查和自动化处理。
🐎 Why some Swift types only appear when you import two modules[7]
@DylanYang:作者向我们介绍了 Swift 的 Cross Import Overlay 特性,当同时导入两个指定模块时,会自动加载对应的 overlay 模块,引入额外的类型。这可以用于扩展已有类型、新增 API,而无需修改原始库源码。文中演示了一些基础用法与场景,同时也说明了该能力的适用边界与一些需要留意的限制。
代码
🐎 Beta Previews: LazyState[8]
@阿权:Xcode27 将@State升级为宏,行内默认值支持惰性初始化,但不支持在 init 中利用外部入参惰性初始化状态;在 init 直接赋值会反复创建对象。苹果建议用onAppear + Optional,但会引入可选污染、手写 Binding、多余容器等一堆问题。
LazyState 库:Point‑Free 封装 SwiftUI 内部已存在的未公开LazyState类型,提供@LazyState宏。在 init 传入闭包,利用外部参数惰性创建状态对象,视图生命周期仅初始化一次,正常支持$生成 Binding,消除可选与 onAppear 样板代码。
限制:父视图更新参数重建子视图,不会刷新子视图 LazyState 内部状态,与 onAppear 方案行为相同;当前仅限 Point‑Free Max 会员 Beta 试用。
🐎 MotionPhotoKit[9]
@极速男孩:MotionPhotoKit 是一个开源跨端动态照片库,支持 Android、iOS 和鸿蒙。它将不同平台的动态照片转换为统一格式,支持原生播放和保存到系统相册,并可复用应用已有的下载、鉴权与缓存能力,适合聊天、社区和信息流等场景。
内推
重新开始更新「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)
Apple Reference Image: https://mjtsai.com/blog/2026/09/16/apple-reference-image/
[2]Apple Reference Image: https://security.apple.com/blog/apple-reference-image/
[3]Inside iOS 27's Reworked Stub Islands: https://codecolor.ist/posts/2026-06-15-ios27-reworked-stub-islands/
[4]In-House Over-the-Air Localizations in a Modular iOS App: https://albertodebortoli.com/2026/09/08/inover-the-air-localizations-in-a-modular-ios-app/
[5]arm64e.x1: Apple's Checked Pointer Arithmetic Slice: https://blakecrosley.com/blog/arm64e-x1-checked-pointer-arithmetic
[6]The new JSON project format in Xcode 27.2: https://sarunw.com/posts/xcode-json-project-format-xcproj/
[7]Why some Swift types only appear when you import two modules: https://sarunw.com/posts/swift-cross-import-overlay/
[8]Beta Previews: LazyState: https://www.pointfree.co/blog/posts/223-beta-preview-lazystate
[9]MotionPhotoKit: https://github.com/ronny917/MotionPhotoKit