1、内置图标和项目文件图标有变化 ,可以轻松地按形状和颜色识别不同类型的文件 。
内置图标
项目文件图标
新建的 SwiftUI 项目工程中不再有 Info.plist 文件
新建的 iOS 项目工程中的 Info.plist 文件中也只有少量的内容,集成在项目 : TARGET --- Info --- Custom iOS Target Properties
支持隐藏文件的后缀名 : Preferences --- General --- FileExtension
支持 Vim : Preferences --- Text Editing --- Editing --- Enable Vim key bindings
断点可以更加细化到某列,不再局限于某一行,具体操作:选中操作 —> Show Code Actions —> Set Column Breakpoint 。
Storyboard 的左下角菜单支持 Accessibility 、暗黑模式切换、横竖屏切换和预览 。
- Storyboard 菜单
Storyboard 中 UIButton 支持 iOS 15 引入的更多配置
工具栏中停止按钮只有运行以后才会出现,并且编译运行时的长形进度条改为圆形进度条。
自动补全更强大。
(1)如输入 view.cor,会自动提示 layer.cornerRadius。
(2)可选型解包时自动提示。
(3)switch 分支如果传入的是枚举,会自动将所有 case 列出。
(4)遍历数组时,会自动使用数组名的单数形式,如数组名为 names ,遍历时为 name 。根据书写的内容可以自动导入相应的模块,可以不用手动导入(目前 Beta1 还有一些问题,会有导入不了的情况出现)。
界面
- Xcode 13 重新设计了 Project Navigator,各种不同的文件类型使用了符号化的图标。默认情况下,文件扩展名是隐藏的。总体来说,视觉观感变得更干净了。
Xcode Cloud
Xcode Cloud 是对于团队协作是一项重要的补充特性,它允许持续集成和交付,跨越多种设备类型进行并行测试,还能自动推送 App 到 TestFlight,使得测试人员获取最新版本的项目构建更加便捷。
源码编辑器
源码编辑器是我们在开发过程中花费最多时间的地方,Xcode 13 在源代码编辑器方面改进了不少细节,尤其是自动补全功能。
自动导入
如果你在编写代码时使用了当前不可用的类型,Xcode 会自动帮你导入相关的框架。比如,如果你编写下面这样的代码:
struct ExampleView: View
Xcode 会检测到 View 属于 SwiftUI 框架,然后在代码补全时自动添加 import SwiftUI 到源文件头。
解包语句自动补全
如果你尝试解包一个可选型,Xcode 现在会为你自动补全。尝试下面这样的代码:
struct UserGreeting {
func greet(name: String?) {
if let na
}
}
当你在键入 if let na 时,Xcode 会提供 if let name = name 作为自动补全的选项。
更深路径的自动补全
Xcode 现在还能针对属性之下的属性提供深路径的自动补全。尝试下面这样的代码:
class ExampleVC: UIViewController {
override func viewDidLoad() {
let someText = UILabel()
view.corn
view.addSubview(someText)
}
}
当你在键入 view.corn 时,Xcode 会提供 view.layer.cornerRadius 作为补全选项 —— 它实际上检查了 layer 下的属性并且把它们提升到上层作为补全选项。
Switch case 自动补全
当你在使用 switch 语句时,Xcode 现在会用所有的枚举 case 自动补全。尝试下面这样的代码:
struct PaintMixer {
enum Color {
case red, green, blue, tartan
}
func handle(color: Color) {
switch col
}
}
当你在键入 switch col 时,Xcode 会自动补全 col 为 color,并且填充该枚举类型所有可能的 case。
数组遍历语句自动补全
当你遍历一个数组时,Xcode 现在能够用数组名称的单数形式自动为你补全 for 语句。尝试下面这样的代码:
struct NamePrinter {
let names = ["Becca", "Holly", "Ted"]
func printNames() {
for nam
}
}
当你在键入 for nam,Xcode 会自动补全剩余的部分,输出 for name in names —— 它能够知道 names 是复数,并且创建单数版本并且用作遍历的变量名。
如果要我猜测的话,我估计这个特性是基于某种机器学习的策略,因为 Xcode 可以理解各种形式的复数 —— 包括不规则的复数。尝试下面这样的代码:
let indices = [1, 2, 3]
let people = ["Eric", "Maeve", "Otis"]
let millennia = [1000, 2000, 3000]
let geese = ["Golden", "Mother", "Untitled"]
列断点
Xcode 13 可以让你放置 “列断点” —— 这是一种可以在一行代码的中间位置精确插入的断点,而不仅仅是以往只能针对整行代码的断点。
比如,我们可能像下面这样调用多个函数来产生某个单一值:
func first() -> String { "A" }
func second() -> String { "B" }
func third() -> String { "C" }
func buildString() -> String {
first() + second() + third()
}
如果我们在 buildString() 这一行放置一个断点,我们需要分别 Step Into 每个函数来查看代码。但是假如我们已经大致知道问题所在,则可以直接放置一个“列断点” —— 比如让 Xcode 精确地停在 second() 的调用点。
你可以尝试上面的代码,选中 second() 然后按 Shift+Cmd+A 调起代码动作 —— 或者右键菜单选择 Show Code Actions,你会看到 Set Column Breakpoint。
列断点的工作方式和常规的行断点是一样的。所以你可以点击并拖拽它们,或者右键编辑它们以添加自定义设置。
Vim 模式
最后一项对于 Xcode 源码编辑器的改进值得特别关注,因为这对于某些程序员来说可能是会令他们爱不释手的一项功能。
这个特性就是 Vim 快捷键绑定,你可以在 Xcode 的偏好设置下启用它 —— 前往 Text Editing,勾选 Enable Vim Key Bindings。
如果你以前没有使用 Vim,我简单介绍一下。Vim 是一个命令行文本编辑器,早在 1976 年就以 Vi 的前身风靡,并于 1991 年升级为“Vi Improved”(简称 Vim)。Vim 的工作方式非常特殊,它需要你仔细了解键盘(某种意义上,可以说 Vim 是高度依赖键盘操作的,这也正是 Vim 能够成就高效代码编写的关键)。现在,你终于可以在 Xcode 13 中应用你在 Vim 里使用的大部分操作。
我之所以说“大部分”,是因为 Xcode 13 目前只支持 Vim 快捷键绑定的一个子集:这其中包括导航、插入、猛拉、搜索等,但相对行号、重复操作、保存 :w 这些操作还是不支持的。不过,这是一个很好的开端,我相信后续还有更多实用的操作会被实现。
版本控制改进
Xcode 已经集成版本控制相当长时间了,但今年这个功能获得了有史以来最大的升级 —— 比较任意两个版本之间的变化变得更加容易,你还可以在 Xcode 中打开 pull requests,邀请代码审查者,甚至在 IDE 内直接处理 code review。
提示:你需要打开 Xcode 的源代码控制功能才能正常工作。如果你之前禁用了这个功能,可以到 Preferences > Source Control 下勾选 Enable Source Contro 来重新启用。
用 DocC 创建自定义文档
Xcode 13 现在已经具备从代码中直接创建文档集的功能。它能够读取你添加的 Markdown 注释,将它们构建到 Xcode 的帮助系统,其所采用的布局和格式同苹果自家的框架是一样的。
Xcode 13
Xcode 13 新增了强大的团队开发功能,非常适合与 Xcode Cloud 以及 GitHub、Bitbucket 和 GitLab 协作功能搭配使用。直接在 Xcode 中发起、审核、评注和合并拉取请求。直接在代码内查看团队成员的注释。快速比较代码文件的任何两个版本。
内嵌团队注释
团队成员在审核期间为代码添加的注释与审核者的姓名和头像一起内嵌显示在代码编辑器中。
即时崩溃报告和反馈
只需几分钟时间,来自 TestFlight 用户的崩溃报告就会出现在 Xcode Organizer 中,同时还有用户反馈,因此您的测试员可以向您描述他们在遭遇崩溃时发生的确切情况。崩溃日志会内嵌显示,您只需点按一下,就能跳转到相关的代码。
自定文档
直接通过源代码的文档注释为您的 Swift 框架和软件包构建文档,然后在 Xcode 快速帮助和专用文档查看器中查看。通过添加扩展文件、文章和教程 (全部以 Markdown 语言编写),扩充这些注释,并选择将编译的 DocC 归档分享给其他开发者或托管在您的网站上。