Skip to content

老司机 iOS 周报 #377 | 2026-08-17

Latest

Choose a tag to compare

@ChengzhiHuang ChengzhiHuang released this 16 Aug 15:25

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

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

新闻

🐎 VersionedDocC: Versioned Swift-DocC websites, API diffs, and reusable release caches

@Kyle-Ye: VersionedDocC 是一个基于现有 Swift 工具链和 DocC 的版本化文档发布与维护工具。它支持为开发分支和多个发布版本生成具有稳定路径的文档站点,在 DocC 页头直接切换版本,并基于公开的 Symbol Graph 生成 API 差异页面;同时还提供多平台文档合并、旧链接重定向和自动选择各发布系列最新补丁版本等能力。通过不可变的按版本缓存(支持 GHCR 等 OCI Registry),新增版本时只需构建新版本和开发分支,无需重复生成全部历史文档,并可直接集成 SwiftPM、GitHub Actions 与 GitHub Pages。适合需要长期维护多版本 Swift API 文档的库作者关注。

文章

🐕 「iOS」解构与重组:AI 时代下的 WICompress 2.0

@EyreFree:本文介绍 iOS 图片压缩库 WICompress 从简易工具迭代至 2.0 版本的完整重构历程,并探讨 AI 辅助开发下开发者的定位。项目最初仅 204 行代码,借助 AI 拓展能力后代码膨胀、职责混乱,两套压缩逻辑混杂,模块臃肿。作者推翻冗余设计,拆分出 Process 固定参数处理、Target 字节上限约束两条独立流程,分层隔离 ImageIO 解码编码与 CoreGraphics 渲染逻辑,以 ImagePipeline 作为统一调度核心。重构精简大量冗余代码,同时依托 AI 完成调研、编码与校验。作者认为 AI 可高效实现各类技术方案,但开发者需要把控架构边界、取舍需求,最终 WICompress 2.0 基于 Swift6.2 发布,分层清晰、API 简洁,附带完善配套文档。感兴趣的朋友可以看看。

🐢 WWDC26:SQLiteData 系列

SectioningCodabilityAdvanced Domain Modeling

@AidenRao:Point-Free 团队通过三期内容,以 WWDC26 的 SampleTrips 为例,系统展示 SQLiteData 在查询与领域建模方面的能力。第一篇从 SwiftData 新增的 sectionBy 出发,使用 @fetchall 和类型安全的查询构建器实现动态筛选、排序与分组;分组依据不局限于模型上的字符串字段,还可以来自计算结果、关联数据,甚至被组织为层级结构。第二篇讨论 Codable 数据的存储与查询:SQLiteData 可以把复杂值保存为 JSON,同时借助 jsonExtract、Swift KeyPath 和 #sql 保留类型与 Schema 安全,直接对 JSON 内部字段进行过滤、排序和分组,文中还演示了根据经纬度计算距离并划分行程区间。第三篇进一步引入更高效的 JSONB、用于遍历数组的 json_each,以及将多列映射为领域值类型的 grouped columns,说明并非所有成组数据都必须序列化为 JSON。整个系列既展示了 SQLite 底层能力,也对比了 SwiftData 在动态查询、复杂字段和运行时安全方面的限制,适合希望深入理解 SQLiteData、数据库查询以及 Swift 领域建模的开发者阅读。

🐎 Using SwiftUI ContentBuilder with non ‑ View types

@DylanYang:本文作者讲解了如何把 SwiftUI 的 @ContentBuilder 用于非 View 类型场景。ContentBuilder 和大家熟悉的 ViewBuilder 机制类似,允许我们使用 DSL 风格的闭包语法去构建自定义数据模型,而不局限于构建视图。文中演示了自定义标记 ContentBuilder 的用法,处理条件分支、循环遍历等 DSL 常见场景,同时也说明了一些限制点,比如对 if ‑ let、switch 的支持情况。借助这套能力,开发者可以给自己的数据结构实现声明式的构建语法,提升代码可读性。感兴趣的读者可以阅读原文进一步了解。

工具

🐎 The Swift Programming Language:可切换历史版本的官方 Swift 书

@JonyFang:官方 TSPL 一直是查语法、补语言特性和带新人入门的标准参考,但 docs.swift.org 通常只提供当前版本。这个站点用 VersionedDocC 按 Swift 发行标签重新构建了同一本书,页头可以直接在 main(6.4 beta)、6.3、6.2.x、6.1、6、5.10 一直到 5.7 共 12 个版本之间切换,每个版本都有稳定 URL。

更有用的是相邻版本的 Changes 页:6.3 到 main 能看到 Concurrency、Protocols、Opaque Types 等 9 处修订,5.8 到 5.9 则能直接定位到新增的 Macros 章。维护旧工程、或想对照语言书在版本间怎么改的时候,比只看最新版方便很多。正文源码仍指向 swiftlang/swift-book

内推

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