谁是 AI-relay App 的真正威胁 - 肘子的 Swift 周报 #158
上周应邀去北京参加了首届 Apple 应用孵化器(Apple App Incubator)的活动,期间蒂姆·库克也亲自出席并为优胜者颁奖。
上周应邀去北京参加了首届 Apple 应用孵化器(Apple App Incubator)的活动,期间蒂姆·库克也亲自出席并为优胜者颁奖。
过去一段时间,社区里频繁出现用 AI 快速逆向商业产品或像素级复刻热门应用的案例。只要 Token 充足,搭建一个免费的“影子版本”似乎已不再是难事。
随着 AI Coding 的普及,不少人开始倾向一种观点:UIKit 这样的命令式框架,可能比 SwiftUI 更适合 Coding Agent。理由很直观——UIKit 的逻辑直接明确:创建对象、设置属性、加入层级、建立约束,每一步都有具体操作的实体;而 SwiftUI 把大量实现细节收束在声明式语法之后,状态、环境、身份、布局与渲染共同决定了最终结果。
上周,Google Cloud 推出了面向服务端的 Swift SDK。它覆盖 Cloud Storage、IAM、Secret Manager、AI 等一百多个 Google Cloud 服务,并提供认证、重试、分页等完整的云端基础能力。Google 对它的定位非常明确:这是为 Server、Container 和 DevOps 准备的 Swift SDK,而不是给 iOS 应用直接访问云服务使用的客户端工具。
Xcode 26.3 是苹果第一次通过 MCP 把自身能力开放给外部 Agent。其中不少能力此前借助 CLI 也能获得,但 Preview 渲染是头一回出现。到了 Xcode 27,苹果又提供了 headless MCP server,调用起来更加顺手,于是我把 Preview 渲染大量嵌进了自己的 AI 工作流。一路用下来,踩了一些坑,也多了一些感悟和期待。
包含 iPhone Duo 模拟器的 Xcode 27.1 beta 于 9 月 18 日发布,距离 10 月 23 日正式发售仅五周。颇为微妙的是,彼时不含 Duo 支持的 Xcode 27.2 beta 已先行推出——想适配苹果最新的设备,反而要使用版本号更低的 Xcode。
在 第一次看到 `ArrangementView` 的 API 时,我有一种说不出的别扭感。直到在 Xcode 27.1 beta 中实际使用后,这种感觉才逐渐清晰。查阅更多的苹果资料,再把它放回 iPhone Duo 的使用场景,我发现这份别扭其实来自两个方面:一部分源于我对它的定位不够清楚,理解之后便释然了;另一部分则来自 API 本身,即便想明白了,依然存在。
上周,React Native 核心开发者 Krzysztof Magiera 的一条推文在苹果开发生态中引发热烈讨论。他认为原因在于 SwiftUI 没有使用 Core Animation 的 render-server animation,而是在应用进程中推进动画,因此对 SwiftUI 是否足够“原生”提出了质疑
苹果新发布了 27.2 beta。尽管 iPhone Duo 模拟器依然缺席,但新增的 `project.xcproj` 令人眼前一亮。它替代的是 `.xcodeproj` 包里的那份构建图 `project.pbxproj`,而不是整个工程包。它有哪些亮点,解决了什么问题,又有哪些事情没有改变,本文将对此进行探讨。
尽管 iPhone Duo 的设计资料早在几个月前就已部分泄漏,而且苹果也是折叠机领域的后来者,但凭借软硬件整合能力,它所带来的交互变化还是给不少消费者带来了惊喜。
上月底,苹果发布了新的 Mac mini 和 Mac Studio。除了强悍的性能更新,明显上涨的价格同样给人带来了不小的震撼。内存与存储成本上涨无疑是本轮涨价的重要原因,但在 AI 时代,开发者对硬件的需求也在悄然发生变化。更大的内存、更高的存储容量,不断推高我们心目中“够用配置”的标准,最终也让实际购买价格变得更加夸张。
数据集一大,SwiftData 的列表就开始卡。这是这几年里我听到最多的性能抱怨。SwiftUI 确实有责任,但并非最主要的问题。真正花时间之后会发现,慢的不只是一开始加载时间长,巨大的内存占用同样会把性能拖垮。本文将聊聊在 SwiftData 中为什么会出现这些问题,以及该从哪里下手改善。
AI 工作流的核心其实很简单——人定好验收标准,AI 执行并且按标准验收。说得没错,但实现起来并不容易。“标准”如何而来?如何得到尊重?随着上下文的增长或换一个新上下文,标准难免偏移甚至会被篡改。我需要一种可被信任的 AI 使用方式,简单来说就是“可委托”
从问答、代码生成,到让 Agent 接手更完整的工作,不知不觉间,我已经使用 AI 好几年了。这些年里,变化的不只是模型能力,人与 AI 的协作方式也一直在变。我也在一边使用,一边调整自己的方法。我关心的已经不只是“AI 能不能完成这项工作”,而是另外几个问题:执行范围是否稳定,结果能否被信任,投入是否可以预期,以及什么时候需要人介入。
在 WWDC 2026 中,苹果工程师介绍了 SwiftUI 的一个新特性——ContentBuilder。从使用方式看,它似乎只是一个覆盖范围更广的 ViewBuilder。苹果同时宣称,这项调整能够显著改善类型检查性能。本文将解析 ContentBuilder 的本质,探索性能提升背后的奥妙。
SwiftUI 的 Text 有一项默认行为:当段落末行只剩一个孤词或孤字时,它会主动把上一行的完整词组一并推到末行,避免“落单”。这份体贴多数时候是对的,但代价是上一行可能留下一大片空白——在窄容器或中英混排的场景中,反而破坏了段落的均衡。本文将挖掘 SwiftUI 中一个早已存在、却始终未曾公开的 API —— `avoidsOrphans`,让开发者重新拿回这项控制权。
尽管 Liquid Glass 已经推出两年,但它带来的兼容性问题并未完全消失。SLIT_STUDIO 的开发者 Megabits 结合真实项目,总结了 UIKit 在适配过程中的多个典型坑点及应对方法。
在 init 中给 @State 赋值后,为什么父视图更新数据时子视图无反应?本文解析 SwiftUI 状态管理的生命周期机制与正确的数据传递方式。
使用 Partytown 优化性能后,GA4 和 GTM 事件无法上报?详解如何在 Astro 中配置 forward 属性,让主线程的 gtag 和 dataLayer.push 正常通讯。
Swift 宏编译太慢?在 Swift 6.1+ 中启用 Swift-Syntax 预构建 (Prebuilts),一行命令显著减少 Xcode 构建时间,提升开发效率。
如何在 Swift Package 的多个 Target 间共享代码却不暴露给外部?详解 package 访问修饰符,填补 internal 与 public 间的权限空白,提升模块封装性。
在 VSCode 或 Cursor 中开发 Swift Monorepo 项目时,SwiftLint 无法读取根目录配置?通过设置 configSearchPaths 和明确包含路径,轻松实现多包共享 Lint 规则。
在 VSCode/Cursor 中运行 Core Data 单元测试报错?这是因为 xcdatamodeld 未被自动编译。学习配置 Xcode 工具链并使用 xcrun momc 手动生成 momd 文件,快速修复测试环境。