Skip to content

老司机 iOS 周报 #382 | 2026-10-26

Latest

Choose a tag to compare

@ChengzhiHuang ChengzhiHuang released this 25 Oct 23:44
· 1 commit to master since this release

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

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

文章

🐢 Heartbreaker 💔 Metamorphic ransomware comes for macOS

@Damien:文章分析了一个零检出的 macOS 勒索样本 Heartbreaker,它用 Rust 编写,加密 ~/Downloads 下的文件并通过 LaunchAgent 持久化。由于密钥硬编码,文件可以直接解密恢复。它会把自身源码嵌入二进制,运行时打乱代码后重新编译替换自己,让每代哈希都不同。但作者用基于文件熵的行为检测证明,加密行为本身仍会暴露它。适合关注 macOS 安全的开发者阅读。

🐕 Modifier Order Is Matrix Order

@Kyle-Ye: 文章从矩阵组合的角度分析了 SwiftUI 中 offset、rotationEffect 和 scaleEffect 这三类二维渲染变换的顺序。作者使用 ImageRenderer 渲染八组修饰符链,将像素质心和二阶矩与矩阵预测对照,说明在这些组合中,靠近视图、先写出的变换先作用于内容。文章通过交换平移与旋转、平移与缩放、非等比缩放与旋转的顺序,展示位置和形状为何不同,并解释了 frame 放在旋转前后如何改变锚点对应的位置。对理解 SwiftUI 变换组合、排查视觉效果问题的开发者值得一读。

作者还在 macOS 27.0.1 的 ImageRenderer 实验中观察到,offset 会先按渲染比例对齐像素网格,后续缩放会放大取整误差。这是特定环境下的实测结果,不能直接视为跨平台或屏幕实时渲染的保证;文中的顺序结论也不应推广到所有 SwiftUI 修饰符。

🐢 iPhone Duo Group Lab | 10/15/26 | Meet with Apple

@阿权:这是这是 Apple Developer 频道 2026 年 10 月 15 日发布 Group Lab(线上开发者答疑会),针对 iPhone Duo,面向 iOS 开发者,围绕布局、导航、垂直侧边栏、铰链、内外屏切换、适配最佳实践展开。

要点总结(参考:iPhone Duo Group Lab 10/15/26 - Q&A):

  1. 基础适配原则
    • 把普通 iPhone /iPad 适配做扎实,优先使用系统组件;Duo 安全区左右不对称,不要假设左右边距相等。
    • 折叠开合是同一个 Scene,不会重建 App,不要依靠屏幕方向做判断,改用 size ‑ class、可用空间。
  2. 导航与垂直侧边栏 vertical ‑ bar
    • TabView 与 NavigationSplitView 可以同时使用,看业务场景;
    • 不要重复造汉堡菜单(侧边抽屉菜单),自定义控件优先放到系统垂直侧边栏;
    • RTL 从右向左语言,侧边栏位置由硬件决定,不会简单翻转。
  3. 铰链与布局(Hinge /reserved ‑ regions / Arrangement Views)
    • 滚动组件:可跨过铰链;固定交互控件要避开铰链区域,不要随姿态大幅度重排 UI。
    • Arrangement Views 用来描述内容语义排布(并排 / 上下);reserved ‑ regions 用来避开摄像头、铰链等系统占用区域。
  4. 状态与滚动保存
    • 禁止单纯保存滚动 Y 偏移;列表保存 item 索引;长文本阅读使用文本锚点 text anchor保存阅读位置。
  5. 开发者现实建议(小团队)
    • 不要为折叠设备强行新增功能;复用 iPad 适配思路;尽量保证所有折叠姿态都可用。
    • 缺少 API 不要硬猜,直接向苹果提交反馈;Pencil 支持暂无时间表,相机模拟器无法调试。
  6. 系统案例参考
    • 苹果系统 App 不会为每种折叠姿态完全重做界面,优先保证跨开合姿态体验连续性。

🐕 Iterative data loading in Swift

@AidenRao:当一个 SwiftUI 页面需要聚合几十项异步数据时,通过大量 async let 同时发起请求虽然写法直接,却会积累大量任务,并且界面必须等到完整结果组装完毕才能更新。本文以 CardioBot 首页执行 40 ~ 50 个 HealthKit 查询为例,将加载过程重构为自定义 AsyncSequence:用 Step 枚举划分心率、训练、睡眠等阶段,迭代器每完成一步便更新并产出累计的 MetricsSnapshot,ViewModel 再通过 for await 渐进刷新界面。每个阶段内部仍可保留适量并发,同时可以调整加载顺序、优先处理当前可见区域,并响应任务取消。这套设计的重点并非单纯缩短全部数据的加载时间,而是在数据密集型页面中兼顾首屏反馈、加载优先级与系统负载。

🐎 Git 3.0's upcoming SHA-256 default will be a costly mistake

@Smallfly:文章质疑 Git 3.0 将 SHA-256 设为默认哈希算法是否值得付出迁移代价,并区分随机碰撞与定向攻击两类威胁,进一步分析双哈希仓库互操作、对象 ID 改写、托管平台适配和生态迁移成本。文章适合 Git 工具链维护者与工程负责人阅读,帮助团队从安全收益、兼容性和长期维护成本三个维度评估迁移方案。由于文章立场鲜明,具体成本判断仍应结合 Git 官方设计复核。

🐎 iPhone Duo Simulator: Testing and optimizing your SwiftUI app

@DylanYang:本文讲解了 Xcode 27.1 新增的 iPhone Duo 模拟器的适配与测试方案。基础适配优先通过 NavigationSplitView、ViewThatFits 等系统容器打造响应式布局,避免硬编码设备尺寸;折叠屏专属能力方面,可通过 ArrangementView 实现主次视图自动分栏,用 reservedRegions 规避折叠线与摄像头遮挡,借助 onHingeChange 监听铰链角度做动效增强,垂直工具栏也会随形态自动适配。文章给出了内外屏切换、折叠过渡等多场景测试清单,同时说明模拟器无法覆盖相机流转、真机性能等场景,文末还推荐了官方开发资源与辅助适配的 SwiftUI Agent Skill 工具

内推

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