# 90 - 失去时才会觉得可贵

发表于

在 WWDC25 的 Bring your SceneKit project to RealityKit Session 中,Apple 正式宣布 SceneKit 将“只修复关键 bug,不再增加新特性”,官方文档也将其标注为弃用状态,建议开发者迁移至 RealityKit。尽管这一天的到来早在许多开发者的预料之中,但当官方正式宣布时,仍免不了让人唏嘘感慨。

虽然 SceneKit 在可见的未来仍可继续使用,但失去官方维护意味着它将逐渐与 Swift 生态脱节,难以与采用现代 Swift 并发模型的新项目无缝集成。SceneKit 并非孤例。回望苹果的框架演进历程,我们发现许多曾经的明星框架正在或已经淡出历史舞台。

SpriteKit 作为与 SceneKit 同期大放异彩的 2D 图形框架,如今已许久未见重大更新。虽然苹果的部分第一方应用仍在使用其功能,但距离官方正式停止维护恐怕也为时不远。与 SceneKit 不同的是,我们至今还没有看到 SpriteKit 明确的接班人。尽管苹果加大了对开源游戏引擎 Godot 的支持力度,但 Godot 带来的约 30MB 体积增加仍让许多开发者望而却步。期待 SwiftUI 未来能够融入更多 SpriteKit 的核心能力——动画、特效、物理引擎等,让开发者在不引入额外依赖的情况下创建高质量的视觉体验。

Combine 的境遇更加微妙。虽然 swift-async-algorithms 为 async/await 带来了部分类似的 Operator 能力,但许多开发者依然怀念 Combine 那种声明式编程的专注感和流畅体验。随着 Swift 严格并发检查的推进,将 Combine 应用在隔离域(除 @MainActor 外)中变得越来越困难,潜在问题也日益增多。可以预见,随着结构化并发代码的普及,Combine 在新项目中的身影将越来越少见。

Core Data 在 WWDC 2025 上同样没有获得任何更新。好在它作为 SwiftData 的底层实现仍承担着重要使命,开发者暂时无需担心其被弃用。但随着 SwiftData 的日趋成熟和新应用最低系统版本的不断提升,Core Data 的使用场景必然会大幅收缩。

回顾过去十余年,苹果构建了众多优秀的第一方框架,极大地改善了生态开发者的开发体验。然而在编程思想与技术手段日新月异的今天,这些昨日明星被新框架取代是技术演进的必然规律。

或许我们在使用这些框架时曾有过各种抱怨和不满,但当真正面临失去时,才会深切感受到它们在特定历史环境中展现出的强大能力,怀念起它们曾经带来的便利与美好。

这种复杂的情感,大概就是每一位技术人在面对变迁时都会经历的——既要拥抱新技术的进步,也要感谢旧框架的陪伴。毕竟,正是这些“过时”的技术,构成了苹果生态成长路上不可或缺的台阶。

原创

探索 SwiftUI ZStack 中的 layoutPriority 奥秘

在 SwiftUI 的布局体系中,.layoutPriority 这一修饰器看似并不起眼,却在关键时刻能左右视图的尺寸分配。大多数开发者都了解它在 VStackHStack 中为子视图争取更多空间的“魔法”能力——优先级越高,越能从拥挤的布局中脱颖而出。但你是否注意过,.layoutPriorityZStack 中也能大显身手?但它的运作机制与 VStack/HStack 完全不同。本篇文章将带你深入剖析这一鲜为人知的特性,演示如何在 ZStack 中应用布局优先级。

近期推荐

Foundation Models:苹果设备端模型的边界探索

很多开发者都迫不及待地想在自己的应用中集成 Foundation Models。但作为一个小尺寸的本地模型,它仍有不少限制。onevcat 近期对该框架的多个关键维度进行了详实测试,包括内存占用、上下文窗口、并发限制、Tool Calling 的潜力与不稳定性,以及 Guided Generation 的 token 开销等。文中不仅详列了实测数据、系统行为与出错情况,还报告了多个 Bug,便于追踪和规避。


Foundation Models 实战全指南 (The Ultimate Guide to the Foundation Models Framework)

Mohammad Azam 从最基础的 prompt 使用讲起,逐步引导读者掌握串流响应(streaming)、结构化输出(Guided Generation)、工具调用(Tool Calling)、SwiftUI 集成与 SwiftData 持久化等 Foundation Models 的关键能力,并提供了完整示例 App(食谱推荐应用)。如果你正计划在实际项目中使用 Foundation Models,这篇实战导向的长文非常值得一读。


重新思考 Swift.org (A Different Vision for Swift.org)

Swift 官网近期完成改版,但这个新首页真的服务好开发者社区了吗?Daniel Steinberg 结合自己参与 Java 社区建设的经验,提出了自己的看法。他指出,目前的 swift.org 更像是一个文档入口,缺乏导向性,也不具备“社区首页”的氛围。Daniel 主张,Apple 可以继续主导语言设计,但社区需要一个由社区主导、面向所有开发者的 Swift 入口。这是让 Swift 成为真正跨平台语言的重要一步。


Liquid Glass 视觉语言初探 (Exploring a New Visual Language: Liquid Glass)

Liquid Glass 是自 iOS 7 以来 Apple 最大的一次设计语言革新,也将成为所有 Apple 平台 UI 的新基石。它通过整合动态光影、空间深度与真实物理反馈,带来了更具“情感温度”的界面体验。

在这篇文章中,Create with Swift 的三位作者 Emanuele AgostaAntonella GiuglianoFlora Damiano 共同分享了他们对 Liquid Glass 的深入理解,内容涵盖视觉原理、层级结构、设计三原则(Hierarchy、Dynamism、Consistency),以及 Liquid Glass 如何在不同平台间实现一致而自适应的呈现方式。同时也提出了不少实用建议,适合设计师与开发者参考。


What’s New in SwiftUI for iOS 26

一如往年,Paul Hudson 对 WWDC 2025 中 SwiftUI 的更新做了全面梳理。虽然今年的更新不算“重磅”,但解决了不少开发者常年绕不开的问题,例如 WebView 支持、富文本编辑、列表区块索引标题等,称得上是一次“细节制胜”的版本迭代。与 Hacking with Swift 上一贯的风格一样,Paul 为每项新特性都准备了示例代码和可运行的 Xcode 项目,方便快速上手测试。


并发模型改造实录 (Structured Concurrency Conversion)

在本系列文章中(共四篇,目前已发布两篇),Jacob Van Order 以 Apple 提供的 UIKit 异步图片加载示例为基础,尝试将传统的 closure 写法迁移至现代的 async/await、Task 与 Actor 模式。Jacob 指出:“Swift 6 并不只是建议你使用结构化并发,而是会用错误和警告强制你采用它。”——这是 Swift 并发模型从「可选」走向「默认」的重要拐点。


大语言模型入门解惑 (Demystifying LLMs)

在 WWDC 期间,Ronald Mannak@omt_conf 分享了他对大语言模型(LLMs)的理解。与多数从 Transformer 原理讲起的讲解不同,Ronald 将其视为“黑盒”,将重点放在 Transformer 之前与之后的流程上,使得内容更易理解、也更贴近开发者视角。他已将这次演讲扩展为 5 段短视频,并在推文串中发布。

工具

ContainerUI

ContainerUI 是一个由 Citron 开发,服务于 Apple 官方 container CLI 的 macOS 开源桌面应用,具备容器、镜像、系统日志与运行状态的完整管理能力。


Monotype: 找回专注写作的乐趣

想在数字喧嚣中回味机械打字机的沉浸感?Justin Poliachik 开发的这款 macOS 应用给出了一个优雅的答案。Monotype 以复古、离线优先的姿态回归写作本质——不是 Markdown 编辑器,也不是 AI 写作平台,而是一台真正意义上的“数字打字机”:无格式、无标签、无干扰,只有你和文字。更令人惊讶的是,它的体积只有 900KB,堪称当下罕见的小而美写作工具。

每周精选 Swift 与 SwiftUI 精华!