Xcode 14 新特性
What's new in Xcode
2022年6月6日
一句话判断
Xcode 14 体积缩小 30%、构建速度提升 25%、SwiftUI 预览默认可交互且支持多变体并排对比——光是这些就值得你立刻升级。
这场 Session 讲了什么
Jonathon Mah 和 Lisa Xiao 全面介绍了 Xcode 14 的更新,从开发体验优化到构建性能提升。
代码编辑方面:更智能的代码补全(自动补全整个 initializer 和 Codable 方法、有默认值的参数用斜体标注);SwiftUI 预览默认可交互,新增预览变体功能可以并排对比不同 Dynamic Type 尺寸、颜色方案、设备方向下的 UI 表现;改进的 Jump to Definition 列表高亮每个结果的差异;Callers 列表展示调用位置和上下文预览。
构建性能方面:Xcode 14 体积缩小 30%;通过提前生成 Swift modules 提高并行度,构建速度提升最高 25%;链接器并行化后速度提升最高 2x;新增 Build Timeline 可视化工具帮助定位构建瓶颈。
Swift 5.7 的 Regex Literal 支持编译期检查,Xcode 会高亮正则表达式中的错误。
值得深挖的点
预览变体(Preview Variants)的实用价值。 一键生成同一 View 在不同 Dynamic Type、颜色方案、设备方向下的并排预览。Session 演示了用这个功能快速发现一个图标在特大字体下导致文字换行的问题。不需要写任何代码,Canvas 上点几下就能对比。
Build Timeline 解决”为什么构建这么慢”的问题。 打开任意 build log 或 result bundle 就能看到可视化的构建时间线。Session 展示了一个脚本阶段(script phase)把整个构建限制在单核的情况——这种瓶颈之前很难发现。
Swift Regex 的编译期检查。 正则表达式现在是 Swift 的一等公民。Xcode 会像检查普通代码一样检查正则表达式,发现语法错误时直接高亮。Session 中演示了一个典型的字符范围 bug(1-9 漏了 0),编译器在正则表达式内部就定位了问题。
代码片段
// SwiftUI 预览变体:并排对比不同 Dynamic Type 尺寸
struct CardView_Previews: PreviewProvider {
static var previews: some View {
CardView(title: "标题", icon: Image(systemName: "star"))
// 预览变体在 Canvas 中通过 UI 控件添加,无需代码
// 可对比:.extraSmall, .large, .accessibilityExtraLarge 等
}
}
// Swift 5.7 正则表达式字面量(编译期检查)
// 之前:let regex = try NSRegularExpression(pattern: "[1-9]+")
// 现在:编译器直接检查正则表达式
let regex = /<([1-9][0-9]*)/
// 如果正则有错误,Xcode 直接在表达式内高亮
最佳实践
- 用预览变体验证 UI 在不同 Dynamic Type 下的表现。 不写代码就能对比,比之前一个个手动切换高效得多。
- 用 Build Timeline 分析构建瓶颈。 特别关注 script phase 和同步任务,它们可能是限制并行度的罪魁祸首。
- 利用新的代码补全功能。 initializer 的自动补全、默认值参数的斜体提示、SF Symbols 在 Library 中的集成——这些小改进累积起来能显著提升编码速度。
- 按需下载平台和模拟器。 Xcode 14 支持按需下载,不需要一次性安装所有平台的运行时。
还有什么值得关注
- TestFlight 新增了更丰富的反馈机制
- 多平台应用的项目结构得到简化
- 错误诊断在长时间构建中会”变灰”,区分当前和上一次构建的错误
- 链接器速度提升对大型项目影响尤为显著