Xcode 9 的全新功能
在 Apple 平台上打造精彩超凡的 app 所需要的一切,Xcode 9 都已为您准备好。即使在编辑最大的文件时,它也能保持超乎想象的高速流畅。它比以往更了解您的代码,您可以直接在编辑器中选择和编辑代码结构,甚至进行代码块的转换。 有了全新的强大重构任务,现在您能迅速地完成 Swift, Objective-C,甚至用户界面文件上的变量重命名。基于 Swift 4 的兼容性,Xcode 9 使用同一个编译器来构建已有的 Swift 3 代码和最新的 Swift 4 代码。从此,数据迁移的节奏,您说了算。
全新的编辑器
重新构建后的源代码编辑器带来了惊人的速度:无论文件多大,它都可以流畅地上下滚动。您可以通过 Preferences (偏好设置) 更好地掌控行间距,设置字体风格,甚至光标类型,使它更符合您的审美标准。新的 command-click 手势能根据代码结构显示相应的代码块,让代码选择更形象清晰。重新设计后的 Issues 模块让代码显示更直观,Fix-it 提示将按类别进行分组,方便您一次提交多个更改。
在 Markdown 文件中,标题、粗体、斜体文本、链接和其他格式将在您键入时同步显现在编辑器中。 Jump Bar 甚至兼容 Markdown 结构,借此您可以快速浏览文档和 README.md 文件。
重构和转换
全新的编辑器远不止于文本输入,更拥有新的内置重构和转换引擎。当您选择一个符号或代码块时,编辑器会提供如“Extract (提取)”和“Rename (重命名)”等强大操作。Xcode 随即会直接在编辑器中更新您的代码结构,让您能继续专注于当下的编程工作。Xcode 9 支持以下的转换和重构功能:
- 补全缺少的协议要求
- 补全缺少的实现存根
- 为抽象方法添加缺少的重写
- 提取至局部变量
- 提取方法和表达式
- 在 switch (开关) 语句中展开默认值以生成所有适用的 case
- switch 和 if/else 语句的转换
- 在 NSLocalizedString 宏中包裹字符串
这仅仅是个开始。 作为 Clang 编译器项目的一部分,Xcode 的本地转换引擎也将进行开源。
源代码管理和 GitHub
Xcode 9 和 GitHub 更紧密整合,让源代码管理变得简单不费力。 您的 GitHub 帐户将内置于 Xcode 中,克隆窗口会显示您的全部个人 GitHub 存储库,和您标记了 star (星号) 的存储库;同时,它也方便您搜索所有的 GuitHub;只需轻轻一点,您即可查看任一项目的详情。
全新的源代码管理导航器凸显了我们对 Git 的支持:您可以快速浏览每个分支,标签及遥控提交更改的计划表;检查某一条目以查看所有受影响的文件,或双击某次提交以查看所有更改内容;如创建和合并分支等常见操作也能在导航器中快速访问。
Swift 4
得助于 Apple 领导的 Swift.org 开源社区, Swift 中的构建过程非常高速,同时,它也能生产出运行更快的 app 及体积更小的可执行文件。新的 Swift 4 编译器现已兼容 Swift 3 代码。您可以轻松地在眨眼之间迁移数据至 Xcode 9:在您的 app 中选择准备转移至 Swift 4 的部分,余下部分可稍后再进行迁移。其语言更具有增强的 String (字符串) 类型。
进一步了解 Swift 4
无线调试,剪断束缚
选择本地网络上的任何 iOS 或 tvOS 设备来安装、运行和调试您的 app,而无需使用 USB 线连接您的 Mac。 首次使用新的 iOS 设备时,只需点击 Connect via Network (通过网络连接),从此该设备即可通过网络无线调试。 无线开发也适用于诸如 Instruments,Accessibility Inspector,Quicktime Player 和 Console 等其他的 app。
模拟和测试
新的模拟器有了显著的升级,使其不但启动得更快,还有了新的外观 — 现在的模拟器看起来和它正在模拟的设备一模一样。模拟器中的设备按钮全都具备真实设备按钮的功能,您甚至可以模拟屏幕边缘手势。它对 Touch Bar 的支持更带来了便捷的快速操作 (例如:只需轻点一下,即可旋转)。
现在您可以并行运行多个模拟器实例以加快测试过程,也可以测试能协调多个任务 (如跨设备进行 iCloud 同步) 的 app。您能进行完美的自动化测试 — 即使在驱动多个实例时,您也可以简单地从 command-line 中启动模拟器。您也能更简单地在所有 Mac 上设置 Xcode Server:它现在内置于 Xcode 中,不再需要另外的 macOS Server app。无间断地构建和测试您的 app,从来没有像此刻一样轻松简单过。
50X倍 速 搜 索
全方位提速
作为构建过程的一部分,全新的索引引擎帮助 Xcode 自动理解您的代码。如 Open Quickly 等使用索引的任务都将显著提速。大型项目搜索将变得惊人地迅速 — 比起以往,最快可达 50 倍之多。而新的构建系统更大大降低了协调编译器、链接器和其他工具的任务开销。
您会喜欢的工具。
Xcode IDE 是 Apple 开发体验的核心。Xcode 与 Cocoa 和 Cocoa Touch 框架紧密集成,为您带来效率惊人的开发环境,助您为 Mac、iPhone、iPad、Apple Watch 和 Apple TV 构建 app。
从概念到代码再到客户,Xcode 带您顺利完成。
一切都完美集成,让工作流程自然顺畅。当您编写新界面时,Assistant 编辑器会在拆分窗格中直观地呈现相关源代码。只需拖动鼠标,即可将 UI 控件与实现代码关联起来。Apple LLVM 编译器技术可解析代码,使您在 LLDB 调试器中看到的每个符号都与编辑器和编译器中的内容保持一致。当您打字时,同一引擎持续处于工作状态,查找错误并提供代码错误修复。
Xcode 甚至能够与 Apple 开发者网站通信,因此您只需点击一下,即可在 app 中启用 Game Center 或 Passbook 等服务。与 macOS Server 搭配使用时,Xcode 可以设置远程 bot,以便连续构建、分析、测试甚至封装 app。当 app 完成时,Xcode 将打包 app 并将其提交至 App Store。
Assistant 编辑器
Assistant 按钮将 Xcode 编辑器拆分为两部分,左侧为主工作文稿,右侧为智能 Assistant 编辑器窗格。根据您在主编辑器中执行的工作,Assistant 编辑器会自动显示 Xcode 确定为对您最有帮助的文件。例如,如果您正在编辑器中编辑 MyClass.m,Assistant 将自动显示对应的 MyClass.h。
Jump Bar (跳转栏)
点按位于每个编辑器窗格顶部的 Jump Bar,可以快速选择要在 Assistant 编辑器中查看的信息。例如,当在主编辑器中编辑源代码时,Assistant 可以显示对应标题、子类或父类或者相关测试。
Interface Builder
Interface Builder 设计画布完全集成在 Xcode IDE 中,可以轻松呈现完整用户界面的原型,而无需编写任何代码。在数分钟内创建出原型,然后以图形方式将界面关联到 Xcode 编辑器中的源,设置窗口、按钮和滑块的布局,从而创建能够正常运行的 Mac、iPhone 或 iPad 用户界面。使用 Assistant 编辑器,您可以使用实现源代码并行操作图形设计。只需用鼠标将 UI 控件拖入源窗格,即可创建代码与界面之间的关联,甚至可以为您创建代码存根。了解详情
版本编辑器和源代码控制
版本编辑器可以轻松比较文件的两个版本,查看提交日志,检查谁更改了代码,甚至可以纵观提交时间线。版本编辑器拆分窗格,以显示同一文件的两个不同版本。当您查看拆分编辑器视图的时间线时,差异会突出显示。Xcode 还可为新项目创建本地 Git 存储库,或签出托管的 Subversion 或 Git 存储库。顶层源代码控制菜单可轻松执行分离和合并操作,非常适用于分散式团队。
测试
测试驱动的开发是 Xcode 中一流的工作流程。使用 Test Navigator (测试导航器),可以轻而易举地跳转到项目中的任何测试、执行一个单独的测试或者执行一组测试。Assistant 编辑器拥有针对测试的新型视图,可以自动跟踪哪些测试在执行当前编辑的代码,从而让您的测试和代码始终保持同步。
自定义
Xcode 环境可以配置,几乎可以满足所有工作流程,包括诸如标签、行为和代码段的自定义功能。
标签
使用标签为项目创建独一无二的视图。每个标签都有自己的导航器、编辑器、助理和实用工具布置区域。您可以为特定任务创建命名标签,重新排列标签,或撤销标签以创建独立的窗口。
行为
告诉 Xcode 对事件(比如启动调试会话或构建时遇到错误)执行什么操作。结合标签,您可以为自己的编辑、设计、构建或调试任务创建自定义工作环境。自定义行为还可通过单一的组合键,彻底重新排列您的窗口。
代码段
代码段库中有数十种预配置代码实现方式,比如定义新类或方法。通过自定义或添加代码段,只需键入少量字符即可插入那些频繁输入的代码。
Open Quickly (快速打开)
使用 Open Quickly (Command-Shift-O) 功能,可快速访问项目使用的任何文件。Xcode 即刻提供搜索的实现方式,您可以选择一个方式,然后点击 Return 来打开文件,或点击 Option-Return 在 Assistant 编辑器中打开文件。
方案
根据调试、剖析、执行代码分析或运行测试套件等具体操作,自定义 Xcode 构建和运行 app 的方式。例如,默认方案是运行时在“Debug”(调试) 模式下构建 app,执行 Profile (剖析) 或 Archive (归档) 命令时,将针对“Release”(释放) 构建相同的方案设置。执行各个任务时,无需更改项目设置。Xcode 会自动配置方案,也可使用“Manage Schemes”(管理方案)菜单进行自定义。
内建 Interface Builder
借助 Xcode 内置的 Interface Builder 编辑器,您无需编写任何代码,即可轻松设计完整的用户界面。只需将窗口、按钮、文本字段和其他对象拖放到设计画布上,即可创建有效的用户界面。
Cocoa 和 Cocoa Touch 使用“模型-视图-控制器”模式构建,因此可以轻松地独立设计界面,不受实现方式的限制。用户界面实际上是 Cocoa 或 Cocoa Touch 归档对象(保存为 .nib 文件),当 app 运行时,macOS 和 iOS 会自动在 UI 与代码之间建立关联。
Storyboard
完整的 iOS app 是由多个供用户导航的视图组成的。这些视图之间的关系由 Storyboard 定义,Storyboard 显示 app 流的完整视图。Interface Builder 的 Storyboard 设计器可轻松创建和设计新视图,并将它们链接在一起,形成适用于自定代码的完整用户界面。
Xcode 包括以下 Storyboard 控制器:
- 表格视图控制器
- 集合视图控制器
- 导航控制器
- 标签栏控制器
- 页面视图控制器
- GLKit 视图控制器
- 或自定义
Assistant
编辑 Storyboard 或 .xib 文件时打开 Assistant,可以迅速将 UI 控件与实现其行为的代码关联起来。如果您尚未编写代码,Xcode 将提出为操作创建存根(启动方法)或出口(保留数据的变量),它们将为界面提供逻辑。
自动布局
iOS 和 macOS 均拥有名为“自动布局”的强大布局系统,该系统为 Interface Builder 提供卓越的内建支持。自动布局基于这样一种概念:界面中的每个对象均可定义约束条件,用于控制其对父视图和其他界面控件的响应。例如,当显示不同语言时,可以让按钮优先保持特定大小或扩展以容纳更大的文本。
Interface Builder 可自动为您创建所有限制条件,确保提供一套兼容的规则。您还可以直接控制约束条件来定义每个条件的确切优先级,以此定义当屏幕尺寸不同、设备旋转或在新区域下运行时 app 的工作方式。
预览
利用预览模式,您可在不同的环境中快速查看界面,无需运行 app,从而大大加快了迭代设计过程。您可以在纵向或横向模式下、在以前版本的 iOS 上、在不同的屏幕尺寸下等环境下查看 app。
Xcode IDE
源代码编辑器
编写代码使用的编辑器非常专业,它具有高级的代码补全功能、代码折叠功能、语法高亮功能、消息泡泡功能。消息泡泡可以显示警告信息,错误信息以及其他对上下文敏感且与代码一致的信息。
Assistant Editor
“助理”按钮将编辑器分为两部分,创建了一个辅助窗格,它会根据您当前编辑的代码自动显示对您最有帮助的文件。该按钮可以显示与标头对应的内容、超类、调用方、被调用方或其他有帮助的文件。
版本编辑器
Xcode 的版本编辑器显示了一条正在运行的提交时间线,从而帮助您决定责任归属,可以回返到以前的某个时刻,然后对源文件进行比较。而且完全支持 Subversion 以及 Git 源代码控制 (SCM) 系统。
内建 Interface Builder
无需编写代码即可设计和测试您的用户界面,几分钟就能设计出原型,然后以图形方式将界面关联到 Xcode 编辑器中的源。
模拟器
通过 SDK,Xcode 可以在基于 Mac 的 iOS Simulator 中构建、安装、运行和调试 Cocoa Touch app,从而获得无缝开发流程。
集成构建系统
处理最复杂的构件、扩展以最大限度地利用多核 Mac 的功能以及进行自动标记、预置并将 iPad 和 iPhone apps 安装到设备中。
编译器
功能强大的 C、C++ 和 Objective-C 开放源 LLVM 编译器已构建在 Xcode 中,并可从“终端”获得。借助此编译器,您的代码可以快速编译,并且由 Apple 优化后,可以生成专为 iPhone、iPad 和 Mac 中的 CPU 调试的超快 app。
图形调试器
在 Xcode 编辑器内直接调试 app。将鼠标悬停在任何变量上可深入分析其内容,使用 Quick Look 可查看其中包含的数据,或者右键点按将变量添加到监测列表中。
连续集成
Xcode IDE 配置这些 bot,分析夜间构建和测试结果,以及可以查到哪次入库破坏了记录。
资产目录
Xcode 中的资产目录编辑器管理 app 的图像,可将相同资产的各种分辨率图像分组归类。构建时,Xcode 将资产目录编译成最高效的最终分发捆绑包。
快速打开
使用主编辑器,只需按 Cmd-Shift-O 即可立即打开您工作区内的任何文件,或者在选择文件的同时按住 Option 键即可在助理编辑器中打开。在以键盘驱动的任何工作流程中,快速打开是一个必要工具。
OpenGL 帧捕捉
只要按下一个按钮,即可对 iOS 设备中的当前 OpenGL 帧捕捉其完整的表现。Xcode 显示着色器的信息,还可以直观地构建帧在 Xcode 调试器中组合的方式。
完整文档
文档查看器将会找到任何您在 Xcode 中搜索的东西,不论是在您的 Mac 上还是在 Apple Developer 网站上。
Live Issues
Live Issues 的工作方式与文字处理工具高亮拼写错误类似,不需要点击‘构建’命令便可高亮显示出常见的编码错误。
Fix-it
Xcode 能做的不仅仅是报告错误。如果您犯了一个编码错误,Xcode 会立即提醒您。您只需敲一下键盘快捷键,它就能立刻帮您修正错误,这样就不需要停下来修改错误再继续编码。
快速帮助
编程时为您显示简练的 API 文档,其中包括为代码撰写的注释。在填写代码过程中显示简短的概述,并在实用工具区域内提供更多链接和参考。
XCTest 框架
有了 XCTest API,构建在 Mac、iPad、iPhone 或 Simulator (模拟器) 上运行 app 功能的单元测试变得更容易简单。
静态分析
让内建的静态分析工具在数秒内尝试数千种可能的代码路径,这样甚至可以在 app 运行前找到代码漏洞。您将获得一份潜在漏洞的报告,其中列出了也许会一直隐藏或几乎不可能重现的那些漏洞。
Instruments
记录数据
告诉 Instruments 分析哪个 app,收集哪类数据,然后只需点击红色大按钮,数据就会被收集并存储以待进一步分析。
可视化比较
记录下数据并按时间显示数据后,很容易看出不同类型数据的关系或多次运行后同类型数据的关系。
深入分析
观察图中的数据高峰,查看此时正在执行的代码,从而方便地进入 Xcode 中解决该问题。
工具库
在库中选择任何捆绑的工具,包括从低层 CPU、网络或文件活动到高级图形和用户事件工具。
Zombie 检测
当 app 尝试访问不再可用的内存时,您可以在 Instruments 内捕获难以发现的错误和崩溃。
源代码视图
通过数据点深入分析、进行排序以找出最消耗 CPU 的方法,并直接在 Instruments UI 中查看代码以查明问题所在。
低开销取样
使用低开销收集高保真信息,只需简单按键即可对性能数据进行取样。
自定 Instruments
使用 DTrace 和 Instruments 自定构建器创建自己的 Instruments。
系统跟踪
仅占用非常少的资源,Instruments 即可录制有关系统中所有进程的信息,从而显示进程交互引发的性能瓶颈。
macOS 包含的其他工具
命令行工具
下载 macOS SDK,标题和构建工具 (如 Apple LLVM 编译器和 Make)。 这些工具能助您轻松安装开源软件或在终端内的 UNIX 上进行开发。 macOS 可以在您首次尝试构建软件时自动下载这些工具,您也可以随时在下载页面 (英文) 找到它们。
脚本语言
macOS 自带的 AppleScript、Perl、Python 和Ruby 皆已默认安装。 并由于 macOS 在 UNIX 上构建而成,您可以使用 Xcode 或 macOS 随附的命令行开发工具,轻而易举地构建流行的开源语言版本。
Apple Event Bridge
底层的 Apple Event 引擎助 AppleScript 和 Automator 拥有强大的功能,使 macOS上 的任务自动化变得轻松又简单。Apple Event Bridge 让您使用与 AppleScript 相同的消息架构来命令并查询由 Objective-C、Ruby 和 Python 等更多语言构建的 app。
音频工具
AU Lab 工具让您可以进行音频流的混合和处理。
Terminal 2
Terminal 2 提供对 UNIX shell 的访问,同时支持标签、颜色和 Unicode。
源代码控制:Git 和 Subversion
Xcode IDE 在 IDE 环境内直接支持这两种 SCM 系统,而且可以从命令行调用。
UNIX 工具
包括所有热门命令行工具,比如 make、awk、sed、ssh、tar 和 zip。
编辑器
macOS 中的编辑器包括 TextEdit、xed(Xcode 编辑器)以及 vim 和 emacs。
FileMerge
比较、区分和合并任何文本文档。