What's new in Xcode 15
Developer Tools 进阶 20m

Xcode 15 新特性:智能补全、宏与 String Catalog

What's new in Xcode 15

2023年6月5日

在 Apple 官方观看视频

一句话判断

Xcode 15 的代码补全变聪明了——它能根据文件名建议类型名、根据上下文排序常用修饰符、展示所有默认参数组合——加上资产目录的 Swift 符号和 String Catalog,日常开发效率会明显提升。

这场 Session 讲了什么

Session 全面介绍了 Xcode 15 的改进,涵盖编辑器、资产管理、本地化、文档、Swift Macros 集成和开发工具链。

智能代码补全。补全现在利用多种信息源:新建文件时根据文件名建议类型名;函数调用时展示所有默认参数排列组合,用方向键选择需要的版本;上下文感知排序——在 VStack 后建议 padding(最常用修饰符),在 Text 后建议 font;已使用的修饰符会降权,避免重复建议;成对属性智能关联(输入 latitude 后自动建议 longitude)。

资产目录的 Swift 符号。颜色和图片资产现在有自动生成的 Swift 符号,代码中直接引用无需字符串。如果重命名资产,构建时报错并可通过代码补全快速修正。这彻底消除了”运行时才发现图片名拼错”的问题。

String Catalog。通过 Edit > Convert to String Catalog 将项目迁移。所有本地化字符串集中在一个编辑器中,左侧边栏显示各语言的翻译进度,构建时自动检测新增/删除的字符串并标注受影响的语言。

文档预览。Editor > Assistant > Documentation Preview 提供实时文档预览。边写文档边看效果,支持代码示例和截图。文档 Catalog 可以包含图片资源。

Swift Macros 集成。Xcode 完整支持宏的开发和调试:Quick Actions(Command-Shift-A)中可以展开宏查看生成代码、在宏代码中设断点、逐步调试。宏的包模板自带示例。

模拟器下载。现在所有模拟器(包括 iOS 和 visionOS)都是可选下载,Xcode 初始安装包更小。

值得深挖的点

补全的上下文感知深度:不只是简单的”最近使用排序”,而是结合了代码位置(VStack vs Text)、已有修饰符(避免重复)和属性关联(latitude-latitude 对)。这些微妙的改进累积起来显著减少了查找文档和输入错误。

String Catalog 的构建时检测:每次构建都会扫描源码中的字符串变化,在编辑器中标注受影响的语言。这比”翻译人员事后发现遗漏”的工作流要好得多——本地化问题在开发阶段就能被发现。

资产符号的类型安全Color.customRedImage.multipleClouds 是编译时检查的符号,不是字符串。这把资源引用从”约定式”变成了”编译式”,与 Swift 的安全理念一致。

代码片段

资产目录的 Swift 符号引用:

// 以前:字符串引用,拼错只有运行时才知道
Image("MultipleClouds")
Color("CustomRed")

// Xcode 15:类型安全的符号引用
Image(.multipleClouds)  // 编译时检查
Color(.customRed)       // 自动补全

// 如果重命名资产,构建时报错:
// "Cannot find 'multipleClouds' in scope"
// 用代码补全快速修正为新名称

使用 String Catalog 管理本地化:

// 源码中使用 String(localized:) 标记可本地化字符串
Text(String(localized: "welcome_message",
           defaultValue: "Welcome to Backyard Birds"))

// 或者使用 Text 的本地化初始化器
Text("Welcome to Backyard Birds")  // 自动进入 String Catalog

// String Catalog 编辑器中:
// - 左侧显示所有语言的翻译进度
// - 新增字符串自动标注
// - 删除字符串在对应语言中标记
// - 支持复数形式和字符串变体

最佳实践

  • 迁移到资产目录的 Swift 符号引用,逐步替换字符串引用
  • 使用 Edit > Convert to String Catalog 迁移本地化到统一管理
  • 在文档注释中利用 Documentation Preview 实时检查排版效果
  • 遇到宏时用 Quick Actions(Command-Shift-A)展开查看生成代码
  • 利用方向键在函数补全中切换不同的默认参数组合

还有什么值得关注

  • Swift Macros 的创建和分发最佳实践
  • String Catalog 与现有 .strings / .stringsdict 文件的迁移细节
  • Xcode 15 在构建速度和内存使用方面的改进
  • 测试导航器和测试报告的 UI 改进
WWDC 2023