从今天开始,不再做一个打字员

分享一下如何在 Xcode 中创建快捷代码段,提升开发效率。

自动补全与 Code Snippet

在使用 IDE 开发时(如 Xcode),IDE 一般会根据当前的键入,显示一个自动补全的候选框,用于快速补全输入,提高编码效率。

上图中,当我们键入 self.view 以及 self.view setNeeds 时,可以看到自动补全框最左侧有诸如 PM 的字样,这很好理解,P 即是当前 self 所包含的 property,而 M 则是实例方法,这些自动补全,是 Xcode 对当前类进行编译、生成索引之后为我们提供的。

而自动补全框之中的另一类选项,才是我们今天要讨论的重点:

此类补全的左侧标记为 {},也就是本文的主角 Code Snippet,Code Snippet 并不是编译器编译分析后的结果,它是一个预设好的文本片段,只要输入关键字就会出现。

创建 Code Snippet

创建一个 Code Snippet 的方式非常简单,首先在 Xcode 的 Utility 面板底部,选中 {} tab,然后在编辑器中选中目标代码段,再 cmd+drag 拖入 tab 之中即可。

可以看到,在简单设置完 Completion Shortcut 之后,你就可以在自动补全中找到它了,另外 Snippet 的内容并不局限于代码,所以其实这是一个 Text Snippet。

对号入座

你已经创建好一段自定义 Code Snippet 了,现在就可以开始整理你的常用代码,然后把自己从无尽的打字/复制粘贴中解放出来了,但我相信你还想更进一步的。下图是我创建的一个便捷声明 property 的 snippet,先来看看效果:

除了固定的文本,还加入了占位文本,方便输入,简直完美!

要实现该效果的方式也非常简单,在 Code Snippet 编辑框中,你只需要输入 <#placeholder#>,Snippet 就会有对应的占位符。

而这个编辑框中,还有几个下拉选框,其中 Platform 和 Language 都很好理解,相当于作用域,毕竟我们不想在编写 c++ 的时候提示一些为 oc 设置的代码段。

而在底部,还有一个很重要的选框:Completion Scopes。

先来看看我们的 weakprop 提示会在什么情况下出现:

似乎它在任何情况下都会弹出提示,这显然是不对的,property 声明应该只在类声明 @interface ... @end 中间出现,而 Completion Scopes 正是用于控制其作用域的。其中有两个看起来像是我们想要的,分别是:Class Interface MethodsClass Interface Variables,乍看之下,似乎这个 Variables 的定义就是我们要找的,但是经过实验,这两个作用域其实分别对应:

1
2
3
4
5
6
@interface ViewController (){
//Class Interface Variables
}

//Class Interface Methods
@end

@property 关键字的角度出发,这样倒是理解的通了,毕竟其本质就是为 ivar 声明 getter 和 setter 方法。在为 weakprop 添加作用域之后,一个完整的 Code Snippet 就创建完成了。

以上就是本文的全部内容,赶紧动手去创建自己的 Snippet 吧!