学习

Xcode13新增内容

2021-09-22  本文已影响0人  iOS_zy
image image image image
struct UserGreeting {
   func greet(name: String?) {
       if let na
   }
}

当你在键入 if let na 时,Xcode 会提供 if let name = name 作为自动补全的选项。

class ExampleVC: UIViewController {
   override func viewDidLoad() {
       let someText = UILabel()
       view.corn
       view.addSubview(someText)
   }
}

当你在键入 view.corn 时,Xcode 会提供 view.layer.cornerRadius作为补全选项 —— 它实际上检查了 layer 下的属性并且把它们提升到上层作为补全选项。

struct PaintMixer {
   enum Color {
       case red, green, blue, tartan
   }

   func handle(color: Color) {
       switch col
   }
}

当你在键入 switch col 时,Xcode 会自动补全 col 为 color,并且填充该枚举类型所有可能的 case。

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"]

比如,我们可能像下面这样调用多个函数来产生某个单一值:

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 的偏好设置下启用它 —— 前往 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 的源代码控制功能才能正常工作。如果你之前禁用了这个功能,可以到 Preferences > Source Control 下勾选 Enable Source Contro 来重新启用。

注:本文参考了简书,知乎,developer.apple.com,等文章加以拼接和修改完成

上一篇下一篇

猜你喜欢

热点阅读