Xcode 8 新特性
在2016 苹果全球开发者大会(WWDC)期间, 苹果一如既往地给开发者们披露了新版的集成开发工具 – Xcode, 在过去的每一次大版本发布中,苹果都会积极地改进开发工具,添加一些极具吸引力的新功能,今年也不例外。
1. Swift 2 and 3
过去每一版的Xcode 都和固定版本的Swift编程语言绑定在一起, Xcode 8中将不再如此,Swift 3给 Swift编程语言带来大量的语法变化,这些改变会让基于以前Swift版本的程序编译失败。
Xcode 8 中新创建的项目默认地使用Swift 3, 幸运地Xcode 8 在编译设置中支持开发者明确地选择Swift 2或Swift 2.3 进行编译。

支持Swift语言以往版本
这就是说你可以选择适合的时候迁移项目到Swift 3, 如果一个目标(Target)需要支持Swift 2.3, 需要在目标(Target)的编译设置里把Use Legacy Swift Language Version 设置成Yes。
Xcode 8 也提供了迁移工具帮你把项目升级到Swift 3, 不过Xcode提供的迁移工具让人喜忧参半,这次Swift 3 升级比上次升级有太多的变化,希望Xcode 8 的迁移工具会有所改善吧。
2. 源码编辑器扩展
Xcode 8 最让人惊喜的是支持源码编辑器第三方扩展,开发者对于本地插件系统已经翘首企盼了很多年,源码编辑器扩展算是沿着插件系统方向迈出坚实的第一步吧。
源码编辑器扩展很类似于Xcode的扩展,但苹果一再强调当前的扩展专注于源码的操作和导航,也就是为什么会叫做源码编辑器扩展,Xcode 8 甚至提供了编辑器扩展模板让你快速上手。

Xcode 源码编辑器扩展模板
对于当前扩展架构中我最喜欢的一点就是每个扩展都运行在不同的进程中,这就意味着扩展的异常崩溃不会引起Xcode的意外终止,随着本地插件的越来越多,特别是苹果发布了新版的Xcode, 分进程运行的优势会显得越来越突出。
扩展对比插件另一个优点是安全,你可以通过开发账号登录和发布扩展程序,苹果也提到开发者可以通过Mac 应用商店销售扩展,对于想通过销售扩展赚钱的开发者来说是很不错机会。
我对于源码编辑器扩展是非常兴奋的,虽然我是 Alcatraz 的粉丝,但苹果的本地扩展更贴近于未来正确的方向。非常期待开发者们未来会提供什么样的扩展,其实已经有人在 GitHub 上发布了插件。
3. 调试
即使最好的开发者每天都要花费大量的时间进行调试程序,懂你的苹果提供了更好的工具让调试更简单,Xcode 8中针对调试做了不少显著的优化。
界面调试
Xcode 8中的界面调试非常强大,界面调试可以展示运行时(runtime)问题,改善后的界面调试对于调试不清晰或者不满意的布局变得更加简单。
运行时问题?没错,Xcode 8中除了编译时问题还提供了运行时问题,如果在运行时遇到自动布局的问题,Xcode会在左面导航面板把这些问题展示为运行时问题,这将会是个非常受欢迎的功能。

运行时问题
内存调试
Xcode 8 的内存调试功能针对查找内存泄漏和循环引用的问题也做了显著优化,我还不太确定在实际项目中效果如果,但看起来很棒。

内存调试
4. 代码签名
代码签名对于那些对苹果平台有兴趣开发者来说是非常不幸的,但幸运的是苹果没有做把头埋在沙子里的鸵鸟,苹果看到了开发者们遇到的问题并尝试解决,一些经验非常丰富的开发者也会不时遇到签名的问题,在今年的 Platforms State of the Union视频中, 苹果甚至自嘲自己的 修复问题(Fix Issue) 按钮,不仅很少时候能修复真正的问题,有时候会把问题弄得更糟。

修复问题(Fix Issue) 按钮通常不能修复问题
代码签名问题在Xcode 8 中将成为过去式,对于每一个目标(Target), 你可以勾选复选框让Xcode帮你管理代码签名,这个选项对于新项目默认是勾选的。在勾选的情况下,Xcode帮你管理证书,配置文件 和 应用标示等。

Code Signing Done for You
希望苹果这次能解决签名问题,数以万记的开发者们和我一起祈祷吧。
5. 其他改善和增强
San Francisco Mono字体
如果你非常享受使用精雕细琢的软件,你应该会很喜欢Xcode 8中的San Francisco Mono 字体,请参看下图:

San Francisco Mono
高亮当前行
你有没有注意到上面截图中的当前行被标示为高亮? 这是Xcode8中另一个受欢迎的功能,当前我在Xcode 7 中使用Backlight for Xcode 实现类似功能,在Xcode 8 中将不再需要这个插件了。
图片代码自动完成
说到一些将被废弃的插件, 目前我在使用 Kent Sutherland开发的插件 KSImageNamed 能够在Xcode中帮助图片代码自动完成, 在Xcode 8 我将不需要这个插件,因为这个功能已经内置在Xcode 8 中。

图片自动完成
6. 文档
相信每个开发者都会在浏览和阅读文档上会花费很多时间,好的文档对于开发者有很大帮助,其实苹果的文档是非常优秀的,但提供的浏览方式却没有那么友好。
这个问题在 Xcode 8 将会被解决,新的文档格式看起来漂亮极了,且文档浏览会变得简单和快捷。苹果也针对内存问题做了相关优化,新版的内存占用会少很多。
下面是两张关于文档的截图,是不是极有设计感?

新文档浏览器图1

新文档浏览器图2
总结
最后想说我这篇文章只是覆盖了Xcode新功能的一部分,对于Xcode的大版本升级我总是很期待的。 哪一个是你最喜欢的Xcode 8中的新功能? 在评论区不吝分享吧。
转自:http://www.cocoachina.com/ios/20160714/17038.html
Xcode 8 新特性的更多相关文章
- xcode 10 新特性
这里主要介绍一下Xcode10 版本主要更新的内容.随着iOS12的发布,Xcode10已经可以从Mac App Store下载.Xcode10包含了iOS12.watchOS 5.macOS10.1 ...
- iOS 11系列 - Xcode 9新特性
Xcode 9最近刚刚发布,带来了一系列不错的新特性,可以更好的帮助到开发者完成开发工作. Xcode Runtime Tool Xcode 9中有许多Runtime Tool可以帮助开发者找到代码错 ...
- IOS学习【xcode 7新特性url链接】
由于xcode7的更新,在访问http链接的时候会输出错误信息 The resource could not be loaded because the App Transport Security ...
- 粗解Xcode 5新特性: Asset Catalogs
原文:http://schlu.org/2013/10/01/Xcode-Asset-Catalogs.html 基础知识 在今年的WWDC大会上苹果介绍了Asset Catalogs.Asset C ...
- Xcode8新特性和iOS10新特性
从 Xcode 8.0 开始,目前所有的插件都无法工作! NSLog 无法输出 -- 此bug等待正式版本... Xcode 提供了文档注释快捷键option + cmd + / 但是要把系统升级到1 ...
- Xcode9新特性介绍-中文篇
背景: Xcode 9 新特性介绍: 1.官方原文介绍链接 2.Xcode9 be ta 2 官方下载链接 本文为官方介绍翻译而来,布局排版等都是按照官方布局来的. 与原文相比,排版上基本还是熟悉的配 ...
- Xcode 8 的 Debug 新特性
Contents OverView Static Analyzer Localizability Instance Cleanup Nullablility Runtime Issue View De ...
- 会报编译器警告的Xcode 6.3新特性:Nullability Annotations
最近在用Xcode 6.3写代码,一些涉及到对象的代码会报如下编译器警告: 1 Pointer is missing a nullability type specifier (__nonnull o ...
- WWDC2016 Session笔记 - Xcode 8 Auto Layout新特性
目录 1.Incrementally Adopting Auto Layout 2.Design and Runtime Constraints 3.NSGridView 4.Layout Feedb ...
随机推荐
- [C#] 與Android共舞–透過GET方式傳資料給Server(含解決中文編碼問題) (转帖)
上一篇文章分享了透過POST 方式傳資料回Server,這一篇來談談有關於透過GET的方式傳遞 首先,如我預期的一樣,透過網址傳遞,會產生編碼問題,這邊我就順代解掉,希望有碰到的人 可以不用為此煩惱. ...
- C#设计模式(6)——原型模式(Prototype Pattern)
一.引言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在 ...
- 在 .NET 4.5 中反射机制的变更
反射机制(Reflection)通常会涉及到3中场景: 运行时反射 场景:可以检索已加载程序集.类型.对象.实例和方法调用的元数据(Metadata). .NET 支持情况:支持 仅供静态分析的反射 ...
- SQL——字符串处理函数
1) ASCII Format:ASCII ( character_expression ) Function:返回表达式最左端字符的ASCII值. eg: select ASCII('abcdef' ...
- HTML5中已经不支持元素汇总,持续更新
HTML5中已经不支持以下的元素,不建议在进行开发时再使用以下的元素. 1.acronym(建议abbr) : 定义首字母缩写 2.applet(建议object): 定义 applet 3.bas ...
- 插件~Nuget中包与包的依赖关系
在Nuget管理包时,有可能A包的存在需要B包的支持,A包在安装之前,需要先安装B包,这就叫做依赖关系,而在NUGET里,确实有这种概念,比如大叔的Lind.DDD.Manager包,它就依赖于Lin ...
- paip.输入法编程---词库多意义条目分割 python实现.
paip.输入法编程---词库多意义条目分割 python实现. ==========子标题 python mysql 数据库操作 多字符分隔,字符串分割 字符列表循环 作者 老哇的爪子 Attil ...
- 从range和xrange的性能对比到yield关键字(中)
上节提出了range和xrange的效率问题,这节我们来探究其中的原因 yield的使用 我们看下面的程序: #coding: utf-8 def test(): print 4 print ...
- 最简单的方式理解Vue的自定义指令与混合
vue.js 自定义指令 钩子函数:bindinsertedupdatecomponentUpdatedunbind 钩子函数完整实例:html: <div id="hook-argu ...
- PHP Official Service
The way to startup official service command: php.exe -S localhost:80