在 weekly.fatbobman.com[1]订阅本周报的电子邮件版本。访问我的博客 肘子的 Swift 记事本[2]查看更多的文章。加入 Discord[3]社区,与 2000+ 中文开发者深入交流 Swift、SwiftUI 开发体验。
在 WWDC25 的 Bring your SceneKit project to RealityKit Session[4]中,Apple 正式宣布 SceneKit 将“只修复关键 bug,不再增加新特性”,官方文档也将其标注为弃用状态,建议开发者迁移至 RealityKit。尽管这一天的到来早在许多开发者的预料之中,但当官方正式宣布时,仍免不了让人唏嘘感慨。
虽然 SceneKit 在可见的未来仍可继续使用,但失去官方维护意味着它将逐渐与 Swift 生态脱节,难以与采用现代 Swift 并发模型的新项目无缝集成。SceneKit 并非孤例。回望苹果的框架演进历程,我们发现许多曾经的明星框架正在或已经淡出历史舞台。
SpriteKit 作为与 SceneKit 同期大放异彩的 2D 图形框架,如今已许久未见重大更新。虽然苹果的部分第一方应用仍在使用其功能,但距离官方正式停止维护恐怕也为时不远。与 SceneKit 不同的是,我们至今还没有看到 SpriteKit 明确的接班人。尽管苹果加大了对开源游戏引擎 Godot 的支持力度[5],但 Godot 带来的约 30MB 体积增加仍让许多开发者望而却步。期待 SwiftUI 未来能够融入更多 SpriteKit 的核心能力——动画、特效、物理引擎等,让开发者在不引入额外依赖的情况下创建高质量的视觉体验。
Combine 的境遇更加微妙。虽然 swift-async-algorithms[6]为 async/await 带来了部分类似的 Operator 能力,但许多开发者依然怀念 Combine 那种声明式编程的专注感和流畅体验。随着 Swift 严格并发检查的推进,将 Combine 应用在隔离域(除 @MainActor
外)中变得越来越困难,潜在问题也日益增多。可以预见,随着结构化并发代码的普及,Combine 在新项目中的身影将越来越少见。
Core Data 在 WWDC 2025 上同样没有获得任何更新。好在它作为 SwiftData 的底层实现仍承担着重要使命,开发者暂时无需担心其被弃用。但随着 SwiftData 的日趋成熟和新应用最低系统版本的不断提升,Core Data 的使用场景必然会大幅收缩。
回顾过去十余年,苹果构建了众多优秀的第一方框架,极大地改善了生态开发者的开发体验。然而在编程思想与技术手段日新月异的今天,这些昨日明星被新框架取代是技术演进的必然规律。
或许我们在使用这些框架时曾有过各种抱怨和不满,但当真正面临失去时,才会深切感受到它们在特定历史环境中展现出的强大能力,怀念起它们曾经带来的便利与美好。
这种复杂的情感,大概就是每一位技术人在面对变迁时都会经历的——既要拥抱新技术的进步,也要感谢旧框架的陪伴。毕竟,正是这些“过时”的技术,构成了苹果生态成长路上不可或缺的台阶。
在 SwiftUI 的布局体系中,.layoutPriority
这一修饰器看似并不起眼,却在关键时刻能左右视图的尺寸分配。大多数开发者都了解它在 VStack
和 HStack
中为子视图争取更多空间的“魔法”能力——优先级越高,越能从拥挤的布局中脱颖而出。但你是否注意过,.layoutPriority
在 ZStack
中也能大显身手?但它的运作机制与 VStack/HStack
完全不同。本篇文章将带你深入剖析这一鲜为人知的特性,演示如何在 ZStack
中应用布局优先级。
很多开发者都迫不及待地想在自己的应用中集成 Foundation Models。但作为一个小尺寸的本地模型,它仍有不少限制。onevcat[9]近期对该框架的多个关键维度进行了详实测试,包括内存占用、上下文窗口、并发限制、Tool Calling 的潜力与不稳定性,以及 Guided Generation 的 token 开销等。文中不仅详列了实测数据、系统行为与出错情况,还报告了多个 Bug,便于追踪和规避。
Mohammad Azam[11]从最基础的 prompt 使用讲起,逐步引导读者掌握串流响应(streaming)、结构化输出(Guided Generation)、工具调用(Tool Calling)、SwiftUI 集成与 SwiftData 持久化等 Foundation Models 的关键能力,并提供了完整示例 App(食谱推荐应用)。如果你正计划在实际项目中使用 Foundation Models,这篇实战导向的长文非常值得一读。
Swift 官网近期完成改版,但这个新首页真的服务好开发者社区了吗?Daniel Steinberg[13]结合自己参与 Java 社区建设的经验,提出了自己的看法。他指出,目前的 swift.org 更像是一个文档入口,缺乏导向性,也不具备“社区首页”的氛围。Daniel 主张,Apple 可以继续主导语言设计,但社区需要一个由社区主导、面向所有开发者的 Swift 入口。这是让 Swift 成为真正跨平台语言的重要一步。
Liquid Glass 是自 iOS 7 以来 Apple 最大的一次设计语言革新,也将成为所有 Apple 平台 UI 的新基石。它通过整合动态光影、空间深度与真实物理反馈,带来了更具“情感温度”的界面体验。
在这篇文章中,Create with Swift 的三位作者 Emanuele Agosta[15]、Antonella Giugliano[16]、Flora Damiano[17]共同分享了他们对 Liquid Glass 的深入理解,内容涵盖视觉原理、层级结构、设计三原则(Hierarchy、Dynamism、Consistency),以及 Liquid Glass 如何在不同平台间实现一致而自适应的呈现方式。同时也提出了不少实用建议,适合设计师与开发者参考。
一如往年,Paul Hudson[19]对 WWDC 2025 中 SwiftUI 的更新做了全面梳理。虽然今年的更新不算“重磅”,但解决了不少开发者常年绕不开的问题,例如 WebView 支持、富文本编辑、列表区块索引标题等,称得上是一次“细节制胜”的版本迭代。与 Hacking with Swift 上一贯的风格一样,Paul 为每项新特性都准备了示例代码和可运行的 Xcode 项目,方便快速上手测试。
在本系列文章中(共四篇,目前已发布两篇),Jacob Van Order[21]以 Apple 提供的 UIKit 异步图片加载示例为基础,尝试将传统的 closure 写法迁移至现代的 async/await、Task 与 Actor 模式。Jacob 指出:“Swift 6 并不只是建议你使用结构化并发,而是会用错误和警告强制你采用它。”——这是 Swift 并发模型从「可选」走向「默认」的重要拐点。
在 WWDC 期间,Ronald Mannak[23]于 @omt_conf[24]分享了他对大语言模型(LLMs)的理解。与多数从 Transformer 原理讲起的讲解不同,Ronald 将其视为“黑盒”,将重点放在 Transformer 之前与之后的流程上,使得内容更易理解、也更贴近开发者视角。他已将这次演讲扩展为 5 段短视频,并在推文串中发布。
ContainerUI是一个由 Citron[26]开发,服务于 Apple 官方 container CLI 的 macOS 开源桌面应用,具备容器、镜像、系统日志与运行状态的完整管理能力。
想在数字喧嚣中回味机械打字机的沉浸感?Justin Poliachik[28]开发的这款 macOS 应用给出了一个优雅的答案。Monotype 以复古、离线优先的姿态回归写作本质——不是 Markdown 编辑器,也不是 AI 写作平台,而是一台真正意义上的“数字打字机”:无格式、无标签、无干扰,只有你和文字。更令人惊讶的是,它的体积只有 900KB,堪称当下罕见的小而美写作工具。
参考资料
[1]
weekly.fatbobman.com: https://weekly.fatbobman.com
[2]
肘子的 Swift 记事本: https://fatbobman.com
[3]
Discord: https://t.ly/gzxeh
[4]
Bring your SceneKit project to RealityKit Session: https://developer.apple.com/videos/play/wwdc2025/288/
[5]
苹果加大了对开源游戏引擎 Godot 的支持力度: https://fatbobman.com/zh/weekly/issue-087/#在-ios-app-中集成-godot-游戏不再困难-embedding-godot-games-in-ios-apps-is-easy-now
[6]
swift-async-algorithms: https://github.com/apple/swift-async-algorithms
[7]
探索 SwiftUI ZStack 中的 layoutPriority 奥秘: https://fatbobman.com/zh/posts/exploring-the-secrets-of-layoutpriority-in-zstack/?utm_source=fatbobman%20weekly%20issue%2090&utm_medium=web
[8]
Foundation Models:苹果设备端模型的边界探索: https://l.fatbobman.com/w090-01
[9]
onevcat: https://x.com/onevcat
[10]
Foundation Models 实战全指南 (The Ultimate Guide to the Foundation Models Framework): https://l.fatbobman.com/w090-02
[11]
Mohammad Azam: https://x.com/azamsharp
[12]
重新思考 Swift.org (A Different Vision for Swift.org): https://l.fatbobman.com/w090-03
[13]
Daniel Steinberg: https://mastodon.social/@dimsumthinking
[14]
Liquid Glass 视觉语言初探 (Exploring a New Visual Language: Liquid Glass): https://l.fatbobman.com/w090-04
[15]
Emanuele Agosta: https://x.com/emanueleagosta1
[16]
Antonella Giugliano: https://x.com/ella_developer
[17]
Flora Damiano: https://x.com/flora_dam
[18]
What's New in SwiftUI for iOS 26: https://l.fatbobman.com/w090-05
[19]
Paul Hudson: https://x.com/twostraws
[20]
并发模型改造实录 (Structured Concurrency Conversion): https://l.fatbobman.com/w090-06
[21]
Jacob Van Order: https://www.linkedin.com/in/🎉-jacob-van-order-🎉-8438672/
[22]
大语言模型入门解惑 (Demystifying LLMs): https://l.fatbobman.com/w090-07
[23]
Ronald Mannak: https://x.com/ronaldmannak
[24]
@omt_conf: https://x.com/omt_conf
[25]
ContainerUI: https://l.fatbobman.com/w090-08
[26]
Citron: https://x.com/vanillaCitron
[27]
Monotype: 找回专注写作的乐趣: https://l.fatbobman.com/w090-09
[28]
Justin Poliachik: https://x.com/JPoliachik