Highlight
Xcode 14 体积缩小 30%,构建速度提升最高 25%,链接器速度提升最高 2 倍;SwiftUI 预览默认可交互并支持多变体并排对比;代码补全更智能;Organizer 新增 TestFlight 反馈和 Hangs 报告;支持单 Target 多平台应用开发。
核心内容
安装和启动更快
Xcode 14 的下载包体积缩小了 30%,安装时间显著缩短。额外的平台和模拟器可以按需下载——你可以立即获取需要的组件,也可以等到首次使用时再自动下载。
SwiftUI 预览增强
(00:58)
SwiftUI 预览画布现在默认就是交互式的。你修改代码时,预览会实时更新,无需手动刷新。
更实用的是新增的预览变体(Preview Variants)功能。点击画布上的变体按钮,可以不写任何代码就创建多个预览变体,并排对比不同场景下的 UI 表现:
- 深色/浅色模式
- 不同 Dynamic Type 字号
- 横屏/竖屏方向
(01:24)
在 Food Truck 示例中,开发者并排展示了三个不同 Dynamic Type 尺寸下的卡片视图,立刻发现大号字体下第一个图标过宽导致文字换行不自然。这种视觉反馈在 Xcode 13 中需要手动切换设置才能看到,现在一目了然。
更智能的代码补全
(02:53)
Xcode 14 的代码补全有几个关键改进:
Initializer 自动补全:当你开始输入初始化器时,Xcode 会提供完整的初始化器模板,包含所有参数和默认值。
Codable 方法补全:init(from:) 和 encode(to:) 方法现在也能自动补全。
默认值参数标注:有默认值的参数在补全列表中用斜体显示。如果你直接接受补全,这些参数会被省略,使用默认值;如果你想覆盖,可以手动输入参数名加入。
SF Symbols 集成:组件库现在包含所有 SF Symbols,可以直接搜索并插入对应的 SwiftUI 代码。
Frame 等复杂 modifier 的智能补全:frame() 这种有大量可选参数的 modifier,补全时会根据你已输入的内容动态推荐最相关的参数。
导航和错误展示改进
(06:01)
Jump to Definition 重新设计:当方法来自协议且有多个实现时,定义列表会高亮每个结果的差异,显示具体的类型信息,帮助你快速选择正确的实现。
Callers 列表:Command-click 方法名选择 Callers,可以看到所有调用位置及上下文预览,直接跳转到具体的调用代码。
错误变灰机制:当你修改代码后,Xcode 会先让旧的错误信息变灰,表示正在重新评估。长构建过程中也能清楚区分最新构建的问题和之前遗留的问题。
悬浮定义面包屑:编辑器顶部显示当前可见代码所在的定义层级,即使已经滚动到定义之外也能看到上下文。测试方法旁的菱形按钮可以直接运行单个测试。
Swift 5.7 正则表达式字面量
(06:36)
Swift 5.7 引入了正则表达式字面量,Xcode 提供编译期检查:
// 正则表达式字面量支持编译期验证
let regex = /\d+ records/
关键点:
- 正则表达式语法会高亮显示
- 拼写错误会在编译时报错,而不是运行时才发现
- 修改表达式后,错误会先变灰,确认修复后消失
构建性能提升
(10:05)
Xcode 14 通过三个层面的优化提升构建速度:
Swift Module 提前生成:传统构建流程中,编译框架源码 → 生成模块 → 编译应用源码 → 链接应用。Xcode 14 会尽早生成 Swift 模块,解除后续任务的依赖阻塞,让更多任务并行执行。
链接器并行化:链接器速度提升最高 2 倍。
整体效果:项目构建速度提升最高 25%,核心数越多的机器提升越明显。
Build Timeline:构建日志中新增了可视化时间线,可以直观看到每个任务耗时和依赖关系。示例中一个 script phase 把构建限制在单核运行,问题一目了然。
测试和分发加速
(12:10)
- 并行测试消除了 Target 和测试类之间的调度依赖,测试执行时间提升最高 30%
- macOS 应用公证(notarization)速度提升 4 倍
- Interface Builder 文档加载速度提升 50%,设备栏切换速度提升 30%
单 Target 多平台应用
(13:41)
Xcode 14 支持用单个 Target 定义多平台应用。你在 Target 中列出支持的平台,Xcode 会自动处理平台差异,你只需要描述每个平台上独特的部分。这消除了多 Target 之间同步设置和文件的麻烦。
Organizer 新增报告
(17:04)
TestFlight 反馈:Organizer 窗口新增 Feedback 标签页,直接展示所有 TestFlight 反馈,包括评论和截图。检查器面板显示测试者信息和设备配置,可以直接从 Xcode 发邮件联系测试者。
Hangs 报告:新增 Hangs 标签页展示 App Store 用户遇到的最严重卡顿问题。每个卡顿按影响程度排序,附带加权堆栈追踪。检查器面板显示问题在特定 iOS 版本或设备上的分布情况,可以直接跳转到项目中的对应代码。
内存调试器增强
(14:13)
内存调试器现在可以显示对象的所有引用路径(而不仅仅是最短路径),帮助你更全面地理解对象为何泄漏。同时新增对象总重量(total weight)指标,评估对象对内存的整体影响。
Swift Package 插件
(14:47)
Swift Package 现在支持插件:
- 代码处理插件:linter、formatter 等,可以直接从项目导航器调用
- 构建工具插件:生成代码、处理资源(如压缩图片、生成 RPC 接口代码)
- Package 资源支持本地化
应用图标单尺寸模式
(19:28)
对于不需要像素对齐的简洁图标,Xcode 14 新增了 Single Size 模式。只需提供一张图片,Xcode 会自动生成所有需要的尺寸。在 Asset Catalog 中选择图标,在检查器中把”All Sizes”切换为”Single Size”即可。
详细内容
使用预览变体验证 UI
(01:03)
在 SwiftUI 视图的预览画布上,点击变体按钮(variants button)即可添加预览变体:
struct CardStack_Previews: PreviewProvider {
static var previews: some View {
CardStack()
}
}
关键点:
- 变体按钮在画布工具栏中,点击后选择要变化的属性(Color Scheme、Dynamic Type Size、Orientation)
- 系统会自动生成并排预览,无需修改代码
- 适合快速验证 UI 在不同辅助功能设置下的表现
- 发现布局问题后可以立即在代码中修复,预览实时更新
智能代码补全的使用
(02:53)
以给 CardView 添加带默认值的初始化器为例:
struct CardView: View {
let image: Image
let headerIcon: Image // 新增属性
let title: String
let content: String
// Xcode 14 会自动补全整个初始化器
init(image: Image, headerIcon: Image? = nil, title: String, content: String) {
self.image = image
self.headerIcon = headerIcon ?? image // 默认使用相同图片
self.title = title
self.content = content
}
}
关键点:
- 开始输入
init时,Xcode 提供完整的初始化器模板 - 接受默认值后,可以在此基础上修改
- 调用时带默认值的参数用斜体显示,直接回车会省略该参数
- 需要覆盖默认值时,输入参数名的一部分即可 opt-in
使用 Build Timeline 分析瓶颈
(11:31)
构建完成后,在 Report Navigator 中打开构建日志,点击 Build Timeline 标签:
- 时间线展示每个构建任务的开始时间、持续时间和依赖关系
- 长条形任务表示耗时操作,可能是优化目标
- 串行执行的区域(只有一个任务在运行)通常表示存在依赖瓶颈
- 示例中发现一个 script phase 独占一条时间线,说明它阻塞了并行构建
核心启发
-
用预览变体做 UI 回归测试:在开发每个新视图时,添加深色模式、大号字体、横屏三个变体预览。提交代码前快速扫一眼,确保没有布局问题。入口:画布工具栏的变体按钮。
-
用 Build Timeline 优化 CI/CD:把 Build Timeline 加入 CI 流程,定期分析构建瓶颈。重点关注 script phase 和自定义构建规则,它们往往是并行化的最大阻碍。入口:Report Navigator → 构建日志 → Build Timeline 标签。
-
用 Swift Package 插件自动化代码规范:在团队中引入 SwiftLint 或 SwiftFormat 作为 Package 插件,开发者可以直接从项目导航器运行,无需额外安装工具。入口:Package.swift 中添加
.plugintarget。 -
用 Organizer Hangs 报告指导性能优化:每周查看 Organizer 中的 Hangs 报告,按影响程度排序,优先修复影响用户最多的卡顿。入口:Window → Organizer → Hangs 标签。
-
单 Target 管理跨平台代码库:新项目直接用单 Target 支持 iOS 和 macOS,用条件编译和平台特定文件处理差异。减少维护多个 Target 的同步成本。入口:Target 设置 → General → Supported Destinations。
关联 Session
- Demystify parallelization in Xcode builds — 深入理解 Xcode 构建并行化机制
- Link fast: Improve build and launch times — 链接器优化,提升构建和启动速度
- Track down hangs with Xcode and on-device detection — 定位和修复应用卡顿问题
- Meet Swift Package plugins — 使用 Swift Package 插件扩展 Xcode 功能
评论
GitHub Issues · utterances