在 weekly.fatbobman.com[1]订阅本周报的电子邮件版本。访问我的博客 肘子的 Swift 记事本[2]查看更多的文章。加入 Discord[3]社区,与 2000+ 中文开发者深入交流 Swift、SwiftUI 开发体验。
WWDC 2025 如期而至。苹果一次性发布了所有的 Session 视频,让开发者得以在第一时间了解自己感兴趣的新特性和新 API。经过两天的快速浏览,我对本届 WWDC 2025 的初步印象为:意料之中,预想之外。
之所以说意料之中,是因为其中很多新特性在之前的传闻中已经泄露,而且我所关注的几个框架的新进展也大多集中于过去几年间开发者的迫切需求,因此在看到这些变化时并不会在第一时间感到什么惊喜。
但是,当我进一步学习这些新特性、新 API 的设计和使用方法后,我发现它们在设计完成度、实现优雅度等方面远远超出了我的预期。这在某种程度上也解释了长期困扰我的一个问题:为什么很多看起来并不复杂的功能,苹果总是很晚才能提供官方实现。至少今年的不少新 API,都让我感到设计得很精彩,而且也具有相当的前瞻性。
接下来我将就个人感兴趣的一些框架和功能谈谈具体的感想。
对于 Liquid Glass 展示出的效果,我个人持中立态度,既不反感也不特别喜欢。一方面现在还有很多细节没有调整到位,另一方面要想获得预期中的良好整体效果,还需要众多应用进行深度适配。尽管苹果提供了足够便利的 API(SwiftUI 下几乎可以做到立即转换),但由于设计风格的巨大变化,导致很多现有应用的 UI 直接切换成 Liquid Glass 风格并不合适。这也给开发者提出了相当大的调整挑战。
经过两天的使用,我个人的体会是:
总之,要想让应用更加符合 Liquid Glass 的整体风格,开发者可能需要尝试以前不太习惯使用的设计手段,例如采用鲜艳、完整的图片背景。
,时长00:06
相较于前几年,今年 SwiftUI 提供的新 API 并不算多,而且有相当一部分都与适配 Liquid Glass 效果有关。
TextEditor
本身,而是对 AttributedString
的大幅增强。可以说,新版本的 AttributedString
终于具备了取代 NSAttributedString
的可能性,并且提供了更符合 Swift 开发者习惯的 API。AttributedString
的提升(尽管其归属于 Foundation 框架)是今年 SwiftUI 给我带来的最大惊喜。有些遗憾的是,我测试了从去年到今年遇到的一些必现 SwiftUI Bug,在 beta1 版本中并没有得到解决。我认为解决稳定性、提升性能仍是未来相当长一段时间里 SwiftUI 的首要目标。
SwiftData 今年只增加了一个在开发者中使用并不频繁的功能:模型继承[4]。其他一些呼声很高的功能,例如更多的网络同步方式(共享、公共)以及谓词的动态调整,均未出现在本次版本更新中。但这并不意味着今年 SwiftData 的更新是失败的,相反,由于今年修复了之前版本中的几个关键 Bug 并补充了本来应该具备的功能,在 Xcode 26 中使用 SwiftData 构建应用变得越来越可行。
@ModelActor
中更新数据无法在视图上即时响应的 Bug。最为难能可贵的是,上述两个调整均实现了向后兼容至 iOS 17。从某种程度上来说,今年的 SwiftData 才真正呈现出其最初版本想要达到的样子。
在 Xcode 26 beta1 中,模型继承 [6]和 枚举类型属性[7]仍有不同程度的 Bug,不过我相信这些会在正式版本前得到修复。同时,大概率具备 RawValue 的枚举类型也可以直接在谓词中作为查询条件使用。
在 Xcode 26 正式发布后,我认为对于大多数应用来说,SwiftData 已经可以成为开发者重点考虑的持久化框架了
苹果为开发者提供端侧模型 API 本身并不出人意料,但 Foundation Models API 的易用性确实令人惊艳。尤其是基于 @Generable
宏来声明结构化输出的方式,从根本上解决了开发者处理大模型返回内容时的格式难题,极大地简化了开发难度。
已经可以预见,Foundation Models 会在苹果生态中催生大量利用端侧大模型的应用。尽管苹果没有在大模型训练上抢得先机,但凭借其生态优势,在应用与 AI 融合方面有望重新取得领先地位。
在浏览新的 API 文档时,几乎每个框架都包含了多个 Swift 宏。而且随着 Swift 社区提供了 Swift-Syntax 的预编译版本[8],开发者在开发或使用第三方宏时的负担也大幅降低。宏已经成为 Swift 开发生态中重要且不可或缺的一环。
这是开发者长期渴望的功能,就在大家都快要遗忘时,终于在今年推出了。现在开发者也具备了开发计时器或闹钟这类应用的能力。
尽管今年 Xcode 也做了相当程度的升级,但最让我意外和惊喜的是,可以在普通项目的代码中轻松嵌入 Playground 代码块,实现与预览类似的即时交互。类似的功能在几个月前刚在 Swift 论坛[9]中进行讨论,没想到就以更加完美的形态出现在 Xcode 中。这个功能不仅让开发者可以更加灵活、低成本地学习和测试 API,而且也让库开发者可以将更多有效的演示集成到源码中。
可以说,这是 Xcode Playground 近几年来最大的更新,充分利用了 Xcode 自身的优势,也进一步巩固了 Xcode 作为苹果开发生态中最重要 IDE 的地位。
在今年 WWDC 开始前来迎接变化。从结果来说,至少对我个人而言,苹果交出了一份比较满意的答卷。
参考资料
[1]
weekly.fatbobman.com: https://weekly.fatbobman.com
[2]
肘子的 Swift 记事本: https://fatbobman.com
[3]
Discord: https://t.ly/gzxeh
[4]
模型继承: https://fatbobman.com/zh/posts/model-inheritance-in-core-data/
[5]
Codable 类型中的属性也可以作为谓词的筛选条件了: https://x.com/fatbobman/status/1932282506130423813
[6]
模型继承 : https://x.com/fatbobman/status/1932251594713956810
[7]
枚举类型属性: https://x.com/fatbobman/status/1932243401539526661
[8]
Swift-Syntax 的预编译版本: https://fatbobman.com/zh/snippet/speed-up-compilation-with-prebuilt-swift-syntax/
[9]
Swift 论坛: https://forums.swift.org/t/playground-macro-and-swift-play-idea-for-code-exploration-in-swift/79435