聪明的 iOS 开发者的 Xcode 使用技巧

2,749 阅读13分钟
原文链接: www.cocoachina.com

U3834P42DT20120514154017.jpg

ps:此文原作者赘述太多,译者据原文摘译。

用Xcode的快捷方式快速打开你的文件

4673_140225171123_1.png

在开始使用Xcode之前就应该强制记忆其快速打开(Open Quickly)的快捷方式。Mac OS X有一个功能叫做Spotlight搜索(QQ截图20160203165616.png空格),可以帮你找到文件和应用程序(包括别的文件)。快速打开就是Xcode的Spotlight搜索。我经常使用快速打开这个快捷方式,因为这是打开一个文件最简单的方法,只要你知道文件的名字或文件中一个方法/公共变量的名称。快速打开的优点是它使用模糊匹配的逻辑。例如,如果我知道该文件的一些概要,我可以键入“概要”,它会给出任何包含“概要”这个词汇名称的文件。

QuickSimplisticLamprey (2).gif

技巧:用快速打开搜索一个方法或属性可能会很慢,因为它需要对整个项目进行索引和搜索。你的工程越大这会变得越糟,所以搜索一个方法或者属性时,试一下这么搜:

1、使用 command+shift+O 搜索文件并打开。

2、使用 control+6 快捷方式打开跳转菜单。

3、开始键入名称,发现它时点击进入。

这会快得多,因为它只索引单个文件的公共符号而不是在整个工程中。

快捷方式:command+shift+O

用快捷键和代码片段快速编码

我们用了一种不太科学的方式进行测试,用iPhone的秒表测试用鼠标做五个常见的Xcode的事务所花费的时间,我的编码时间中大约有5%花在了Xcode的导航上。根据运行情况,这个测试表明键盘的快捷键要快1.5到3倍。在这个基础上保守估计,在10000小时的职场生涯中,使用Xcode快捷键可以为你节省大约250小时的时间。

此外,还有一个学习快捷键的决定性价值。你学习的快捷键越多,你手指放在键盘上的时间越多,更有助于你专注于思路。现在就试一试!开始专注键入一段代码,用鼠标选择和删除一个词汇,然后继续打字。关注思路是如何被打断的?当你在脑海中平衡一个复杂的编程问题时,轻微的打扰就会中断你的思路。点击这里获得完整版的Xcode键盘快捷键列表

previewcheatsheet.png

对于哪些想要Xcode更详细UI导航快捷键列表的开发者,可参考以下Xcode界面截图。这些快捷键涉及到Xcode窗口的不同部分。我标记的屏幕区域如下:导航(蓝色),编辑器(红色)、调试(绿色)、实用工具(黄色),工具栏(紫色)。

xcodesegments.png

  • command+0: 展示/隐藏导航区域

  • command+1 到command+n选择不同的导航器

  • command+option+J: 过滤导航结果

  • command+shift+Y: 显示/隐藏调试区

  • command+option+0: :显示/隐藏实用工具区

  • command+option+1 command+option+n: 切换实用工具区选项卡

  • control+6:方法的跳转菜单

  • control+1: 魔法菜单(打开试试)

  • control+command+Up 和 control+command+Down: 对应文件导航

  • control+command+E: 范围内重命名符号(注意:不支持属性)

  • control+command+Leftcontrol+command+Right: 查看历史文件

  • control+command+J: 查看符号来源

  • option+Selection: 垂直选择

  • option修饰符: 在辅助编辑器执行快捷键

  • command+shift+] command+shift[: 移动到下一个/上一个的标签

  • command+option+] command+option+[: 将某行代码向上和向下移动

  • command+R: 运行应用程序

  • command+B: 构建应用程序

  • control+.: 停止运行中的应用程序

  • control+i: 格式化代码(高亮代码)

Xcode的代码片段是另外一种加快编程的途径。我反复用代码片段为一小块代码分配一个代号。输入(非常短)代码的名称,我可以把相应的代码块添加到项目中。根据工作类型的代码,Xcode代码片段可以有效提高工作效率。

看看这些GitHub链接,开始你自己的代码片段收集:

使用Xcode的辅助编辑器

辅助编辑器是Xcode中最有用的工具。最初几个月我都没有发现它,直到用这个神奇的按钮打开了我即将编辑的文件。它不是100%的准确,但是菜单系统的设计是超级直观的,所以你基本上总能找到相关的文件。

辅助编辑器将文本编辑器分为两个窗格,并根据你在第一个窗格中正在编辑的文件明智地在第二个窗格中展示有用的功能。例如如果你在storyboard中,它将会展示与当前正在编辑的视图相关的视图控制器代码;如果你处于一个Objective-C实现文件中,辅助编辑器将会展示文件的头文件。你也可以调整辅助编辑器来展示基于普通过滤器的文件或者手动导航到某个文件。

话说我看到一个类,并试图查看如何使用它。这是辅助编辑器很擅长的任务。辅助编辑默认选择实现文件,因为我们正处于头文件中,所以我调整过滤器以展示包括左侧文件在内的文件。我很快找到了该类的用法并思考如何使用它。过去我通常是在整个项目中进行搜索,但是辅助编辑器在这方面速度更快,并可以同时在一个屏幕中显示两个环境。点击这里查看操作

3.gif

技巧:在Xcode中处理UI文件的一项常见操作是设置IBOutlets。你可以用很多方法来做到这一点,但是我最喜欢用辅助编辑器将视图向右拖拽到代码文件中。点击查看如何实现

4.gif

快捷键:

  • 5.png6.png:显示/隐藏标准编辑器和辅助编辑器

  • 7.pngas modifier.例如使用模糊的文件搜索8.png,然后按下7.png,选择一个文件将在辅助编辑器中打开它,而不是主编辑器。

使用、编辑断点以及为其添加不同的Action

Xcode的断点对有经验的使用者来说是个强大的功能。在开发者的职场生涯中,调试工作是困难的,并且花费的时间要比写代码更多。对于使用其他IDE的开发者来说,Xcode提供了一些可能被人忽略的强大的调试的工具。

首先,打开异常/错误断点。每当抛出错误或异常时,调试器都要打一个断点。很多时候应用程序遇到错误或异常会导致程序的崩溃,并且我们会被令人厌恶的代码所纠缠。开启断点的时调试器将会在应用程序的逻辑栈上暂停,这对于诊断问题非常有用。点击这里查看添加断点操作

9.gif

然后,你可以通过编辑断点来更高级地使用它。我做过大量的结对编程,发现编辑断点可以激发开发者的思维。许多人都知道他的功能但不实用,我很幸运在我的Xcode生涯早期有一个聪明的开发者教我关于编辑断点的使用。

技巧:编辑断点添加一个操作。这些action可以是Debugger Command,也可以是Log Message。比如说,我想知道在应用程序的生命周期中何时加载这个视图。我可以在Xcode击中断点时播放声音且调试器不会中断应用程序(通过“Automatically continue after evaluating actions”复选框),而不是添加一个会扰乱我工作流程的传统断点。现在我可以继续愉快地测试,并在加载视图控制器时听到欢快的哔哔声。这是一个快速给你展示如何设置它的示例。

使用Version Editor和Show Related Items更好地审查代码

遇到不合适的或者难易理解的代码时,我通常会先使用Blame模式。Blame模式可以查出原作者以及编写该代码的原因(如果作者写的话)。如果作者没有写明编写该代码的原因,我会跟他们联系并亲自问明原因。

同样的,Compare模式(对比模式)可以精准指出此前上传的代码哪些地方发生了变化。对比模式可以提示我是否遗留了一些测试代码或者空的注释,然后修正和审核代码。对比模式在追踪bug方面也非常有用。

如何才能准确地使用版本编辑器的Blame和Compare模式呢?比如我正在跟踪某个问题的原因,我发现不知何故将临时证书添加到了代码中,所以我使用Blame模式查找临时证书添加的时间添加的原因,结果告诉我去年为了修复某个崩溃问题添加了临时证书。现在我知道去年添加了临时证书,不过我认为这可能不是导致问题的原因。那么还有其他什么发生了改变吗?为了找到答案,我使用Compare模式找到了问题的源头,可以通过一个方案来解决该问题。

另一个可以充分使用的功能是审核代码时使用的Xcode的Show Related Items功能,我称之为“魔法菜单”,虽然它非常有用,但在使用Xcode的第一年,我几乎没有发现它的存在。这个按钮隐藏的非常深,并且看起来也不是可点击的,但是它包含了Callers和Callees这样强大的功能,展示代码在什么地方以及被谁调用过。这个功能可帮助我弄清楚哪里会被改变以及如何改变一大块代码,而又不破坏别的地方。

10.gif

通过扩展为Xcode添加功能

扩展可以为Xcode添加新的或者其本身缺失的功能。不过扩展系统不像其他IDE那样健壮,也不为大多人所知。虽然扩展有很多很酷的地方,但也依然存在问题。大部分IDE都有内置的扩展库,但Xcode甚至没有文档说明他们的扩展API。你可以通过以下比较有用的插件为Xcode添加新功能。

  • Alcatraz:一个开源的Xcode包管理器,可以让你更便捷地发现、安装以及管理插件、模板和配色方案。只需要简单地点击或者勾选,不需要手工复制和粘贴。 

  • FuzzyAutocompletePlugin:一个适用于Xcode 5以上版本的插件,通过添加模糊匹配来提高Xcode代码自动补全功能。虽然你可以通过Xcode的command+shift+O快捷键进行文件和符号名称的模糊搜索,但Xcode默认从首字母进行模糊匹配。而使用FuzzyAutocompletePlugin,发者无需遵循从头匹配的原则,只要记得方法里某个关键字即可进行匹配,很好地提高了工作效率。

  • VVDocumenter:很多时候,为了快速开发,很多的技术文档都是能省则省,这个时候注释就变得异常重要,再配合Doxygen这种注释自动生成文档的,就完美了。但是每次都要手动输入规范化的注释,着实也麻烦,但有了VVDocumenter,只需要在要写文档的代码上面连打三个斜杠,就能自动提取参数等生成规范的Javadoc格式文档注释。 

  • Uncrustify:允许你指定一个编码风格,然后格式化保存代码,无需为了匹配你的代码风格而不断调整代码。你可以检查保存的格式配置和任何扩展它们的代码。(现在只适用于Objective-C)

  • Color Themes: Xcode自带一些默认的配色主题,但如果不够,可通过Alcatraz安装其他主题。

  • AdjustFontSize:增大或减小Xcode编辑器的字体。

  • DerivedData Exterminator:为Xcode增加一个清除全部缓存的按钮。这在调试工程时是很有用的。

  • ObjectGraph-Xcode:根据项目中类之间的依赖关系生成有向图。

  • OMColorSense:展示文本编辑器中UIColor或NSColor的预览效果。通过它可以创建或编辑可视化的颜色。

  • OMQuickHelp:不用Xcode的文档查看器,而是用Dash应用检阅文档。

  • SCXCodeSwitchExpander:当在Objective-C中使用switch语句时,很容易忘记检查所有用例而产生bug。这个插件可以自动生成switch语句代码,并安全处理所有用例。功能包括:插入所有可能的switch cases;保留已经使用的条件,仅插入缺失的条件;当使用内置的Xcode片段时仅保留默认条件;适用于变量、属性以及方法参数等;适用于嵌套switch语句;快速稳定,且不会明显影响Xcode的性能。

通过Interface Builder大幅度提高你的效率

interfacebuilder.png

Xcode有一个叫做Interface Builder的用于搭建用户界面的可视化工具。它不要求使用Interface Builder来创建UI,但可以使调整UI这项的乏味任务变得更简单Interface Builder的大部分操作都在Xcode的实用工具区,所以知道如何以及何时使用相关部件是很有用的,可使用快捷键command+option+0(45.png)来打开实用工具区,就能看到6个非标签性质的按钮,每一个都有不同的重要性,对于Xcode初学者来说找到自己需要的按钮会有点困惑。按照从左到右的顺序,这6个按钮分别是:文件检查器File Inspector、快速帮助Quick Help、识别检查器(Identity Inspector)、属性检查器(Attributes Inspector)、规格检查器(Size Inspector)和连接检查器(Connections Inspector)。

  • 文件检查器(File Inspector):这个特性非常很少使用。看个人爱好,你可以点击打开或关闭自动布局和配置本地化。

  • 快速帮助(Quick Help):这个特性很少使用,可链接到你所选中项目的相关文档。

  • 识别检查器(Identity Inspector):一个很有用的功能,身份检查器用于访问和设置自定义视图类。

  • 属性检查器(Attributes Inspector):我使用它最多。可以配置所选项目的属性,例如标签文本、背景颜色以及alpha值等。

  • 尺寸检查器(Size Inspector):另一个有用的功能,可协助你查看和编辑自动布局约束。

  • 连接检查器(Connections Inspector):此功能的使用频率取决于你IBOutlet的工作流程,可用来连接和查看IBOutlets。

你无需使用以上列出的所有技能才能成为Xcode行家。每个人都有自己独特的Xcode使用技巧,也没有两个人所列的技巧完全一致,关键要弄清楚哪个快捷键和技巧最适合你的开发工作,希望以上内容可以帮你回顾下自己的Xcode使用经验,并找出其他方法让自己成为更有效率、更熟练的开发人员。

推荐阅读:CocoaChina专题:iOS进阶开发,从Xcode开始