在 weekly.fatbobman.com[1]订阅本周报的电子邮件版本。访问我的博客 肘子的 Swift 记事本[2]查看更多的文章。加入 Discord[3]社区,与 2000+ 中文开发者深入交流 Swift、SwiftUI 开发体验。
三个月前,在与苹果某部门的交流中,我重申了对苹果继续举办 Lounges 或 Ask Apple 这类群体问答活动的期待。令人欣喜的是,WWDC 2025 中,全新的群体互动项目以 Group Labs 的形式回归了。
从目前披露的信息来看,除了将参与平台从 Slack 切换至 Webex 外,群组的分类设置也有了一些调整。我个人比较关注的持久化框架和 iCloud 服务并未设立对应的 Lab,这或许在一定程度上暗示着这些领域今年不会有太大的变动。而 SwiftUI 继续保有了独立的 Lab,而非整合在综合 UI 框架的 Lab 中,这一安排也凸显出 SwiftUI 的重要性。
受时差影响,这些活动的举办时间对我而言并不友好(基本都在半夜或凌晨时段)。不过,我依然很享受在直播结束后细细浏览互动问答内容的过程,从中总能学到不少知识,也能了解到许多最新动态。只是平台切换至 Webex 后,我略有些担心这些宝贵的互动内容是否还能在直播后继续保留一段时间供我们回顾。
相比 WWDC 期间的密集互动,我更期待苹果能在 WWDC 结束后的几个月里继续举办类似 Ask Apple 的活动。彼时,开发者们对新 API 已有了一定的实践经验,提出的问题会更有针对性,也更容易理解苹果工程师的解答,从而促成更加深入的技术探讨。
无论如何,能够延续这样的群体问答传统就值得肯定。如果你还未注册,建议不要犹豫。你可以在 此处[4]注册参与该活动。
随着对 Swift 理解的不断深入,我愈发被它的魅力所吸引。Swift 让我能以清晰、准确、安全、现代且优雅的方式表达编程思想。当我想要细数这些特质时,却发现难以言喻。直到最近在项目中实现了一个百余行的功能模块,才将这些吸引我的特性完美串联起来。通过 Swift 的泛型、KeyPath、协议扩展与 ResultBuilder,我们将打造一款类型安全的 DataFrame 导出工具,与 TabularData 完美结合。一起来探索列映射、条件逻辑以及简洁的 DSL 语法,感受 Swift 的独特魅力。
相信不少开发者在 Swift 6 的演进过程中,都曾被并发系统的新特性“困住”过。这篇文章中,Donny Wals[7]着重介绍了 Swift 6.2 中的几个关键更新:nonisolated(nonsending)
、@concurrent
以及 NonisolatedNonsendingByDefault
编译标志。这些变化看似细节,但实际影响代码运行的上下文与默认行为,理解并灵活运用它们仍需要一定时间的消化和实践。
或许,沉浸(挣扎)于并发特性的学习,将成为 Swift 6 全周期的“开发日常”。
Xcode 缺少某些能力?没关系,也许我们自己可以补上这一块。Moritz Philip Recke[9]以 Xcode 16.2 为基础,详细介绍了如何从零开始创建、调试并发布一个 Source Editor Extension。从添加扩展 Target、配置 Info.plist、实现 XCSourceEditorCommand
协议,到使用独立 Xcode 实例调试、完成打包与签名,文章覆盖了整个开发与分发流程。
Xcode 插件生态远不如其他 IDE/编辑器繁荣,其中一个重要原因是苹果开放的权限过于保守,开发者能进行的增强操作非常有限。希望在不远的 Xcode 17 上能看到一些改变。
每个人都有自己的 WWDC 愿望清单,而对 troz[11]来说,或许“修复与开发者的关系”比新增功能更为迫切。在这篇文章中,他提出了三点颇具建设性的建议:开放 iOS,效仿 macOS 的灵活性;提升反馈系统的透明度;改进长期为人诟病的 App 审核流程。
信任一旦流失,重建远比建立初始信任更为艰难。相比 WWDC 台上的热情发言,开发者更在意 Apple 是否在日常真正视他们为伙伴。
在 iOS 18 和 macOS 15 中,SwiftUI 引入了全新的 MeshGradient
,让我们可以通过一组控制点定义复杂而自然的多方向渐变。相比线性或径向渐变,Mesh Gradient 支持更细腻、非线性的色彩过渡,非常适合用于背景、图形填充甚至动画效果。Natalia Panferova[13]从基本使用方法(定义点阵大小、颜色数组),到高级技巧(使用 BezierPoint
控制色彩延展方向),再到动画示例(通过 TimelineView
动态更新点位置),全面介绍了该 API 的能力边界。
随着 iOS 19 的临近,这个“新特性“,或许将开始在更多产品中焕发光彩。
Swift 并不只是 iOS 的专属语言。在 CLI 工具开发领域,它同样能够优雅高效地处理数据流。在这篇文章中,Natan Rolnik[15]详细介绍了如何使用 Swift 处理管道(piped)输入 —— 这是构建命令行工具时的常见需求。文章以一个将 JSON 美化输出的小工具为例,从检测标准输入到异步读取数据,完整展示了实现流程与关键细节。
LLDB 提供了多种打印命令,用于在断点处高效检查变量状态。Natascha Fadeeva[17]在本文中详细介绍了三种常用命令:v
、p
和 po
。她建议在日常调试中优先使用 p
或 po
,因为它们支持计算属性和方法调用,灵活性更高;而在处理并发或竞态等时序敏感问题时,使用不会执行代码的 v
命令则更加稳妥,能有效避免运行时副作用。
由 Rick Van Voorden[19]创建的 ImmutableData
是一个受 Flux / Redux 架构启发而构建的 SwiftUI 状态管理框架,专为现代 Apple 平台量身定制。该架构强调:
其核心主张是:摒弃传统 MVC/MVVM 架构中对“可变状态”的依赖,转而构建一个声明式、可组合、可测试的状态管理系统。所有状态更新都通过 Action 触发,状态层响应更新,视图层自动订阅变更并重新渲染 —— 严格遵循数据从 Action → State → View 的单向流动。
如果你想了解如何将这个框架逐步引入现有项目,可以参考官方的迁移教程项目:ImmutableData-FoodTruck[20]
ObservableDefaults
是我创建的一个 Swift 库,提供两个实用的宏,用于将 UserDefaults和 NSUbiquitousKeyValueStore(iCloud KVS)无缝集成到 SwiftUI 的 Observation 系统中。你可以通过声明属性的方式,自动将其与本地或云端存储关联,SwiftUI 视图将自动响应这些值的变更 —— 无论变更来自应用内部、iCloud 同步,还是系统外部。让持久化数据优雅地融入 SwiftUI 的响应式架构。
参考资料
[1]
weekly.fatbobman.com: https://weekly.fatbobman.com
[2]
肘子的 Swift 记事本: https://fatbobman.com
[3]
Discord: https://t.ly/gzxeh
[4]
此处: https://developer.apple.com/wwdc25/sessions-and-labs/#group-labs
[5]
感受 Swift 的魅力:一键导出 DataFrame: https://fatbobman.com/zh/posts/experience-the-charm-of-swift-one-click-export-dataframe/?utm_source=fatbobman%20weekly%20issue%2085&utm_medium=web
[6]
Swift 6.2 并发新特性 (Exploring Concurrency Changes in Swift 6.2): https://l.fatbobman.com/w085-01
[7]
Donny Wals: https://x.com/donnywals
[8]
创建 Xcode 插件 (Creating Xcode Source Editor Extensions): https://l.fatbobman.com/w085-02
[9]
Moritz Philip Recke: https://x.com/mprecke
[10]
苹果开发者关系 (Apple Developer Relations): https://l.fatbobman.com/w085-03
[11]
troz: https://mastodon.social/@troz
[12]
Mesh Gradients in SwiftUI: https://l.fatbobman.com/w085-04
[13]
Natalia Panferova: https://x.com/natpanferova
[14]
使用 Swift 处理管道输入 (Reading Piped Input in Swift Executables): https://l.fatbobman.com/w085-05
[15]
Natan Rolnik: https://x.com/natanrolnik
[16]
LLDB 打印命令 (Understanding LLDB Print Commands for iOS Debugging with Xcode): https://l.fatbobman.com/w085-06
[17]
Natascha Fadeeva: https://x.com/tanaschita
[18]
ImmutableData: https://l.fatbobman.com/w085-07
[19]
Rick Van Voorden: https://www.linkedin.com/in/vanvoorden/
[20]
ImmutableData-FoodTruck: https://github.com/Swift-ImmutableData/ImmutableData-FoodTruck
[21]
ObservableDefaults - 让持久化数据优雅地融入 SwiftUI: https://l.fatbobman.com/w085-08
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有