Debug Memory Graph和Runtime Issues可以配合使用,通过Debug Memory Graph分析内存关系完成后,点击Runtime Issues可以看到已经发现的内存问题。
Swift 3
Xcode8带来了新版本的Swift3,新版本的Swift变化较大,如果旧版的Swift项目在Xcode8上编译可能会失败。对此,苹果为开发者提供了Swift迁移工具,听说不太好用(我没用过这个工具)。
如果不想立刻就迁移到Swift3,可以在Builder Settings中进行设置,选择Use Legacy Swift Language Version设置为YES,就可以继续使用旧版本的Swift2.3。
其他更新
Xcode新版字体,SF Mono Regular字体。更新Xcode之后我比较喜欢这种字体,看起来代码非常工整。
被编辑的行高亮显示。之前Xcode有个插件就是这个功能,Xcode8把高亮功能集成进来了,使用起来很方便。
最新版的API文档,展示样式发生了很大的改变。
更方便的生成文档(就是喵神写的VVDocumenter),在Xcode8中可以将光标放在方法上面,通过option + command + /快捷键生成文档注释。
Xcode8适配
XIB和Storeboard适配
在Xcode8之前,创建一个XIB或SB文件,都是一个600*600的方块XIB文件。在Xcode8之后,创建的XIB文件默认是6s尺寸的大小。
但是Xcode8打开之前旧项目的XIB或SB文件时,会弹出下面的弹框, 这时候一般直接选择Choose Device即可。
但是这样有个问题,如果Xcode8打开过这个XIB文件,并选择Choose Device之后。其他的Xcode8以下版本的编译器,将无法再打开这个文件,会报以下错误:
The document “ViewController.xib” requires Xcode 8.0 or later. This version does not support documents saved in the Xcode 8 format. Open this document with Xcode 8.0 or later.
有两种方法解决这个问题:
你同事也升级Xcode8,比较推荐这种方式,应该迎接改变。
右击XIB或SB文件 -> Open as -> Source Code,删除xml文件中下面一行字段。
<code>
<capability name="documents saved in the Xcode 8 format" mintoolsversion="8.0"/>
</code>
编译错误
升级Xcode之后,Xcode8对之前的一些修饰符和语句不兼容,会导致一些编译错误。这种错误导致的原因很多,这里大致列几条,各位还是根据自身遇到的情况做修改吧。
之前一些泛型相关的修饰符,nullable之类的有的会报错。
CAAnimation及其子类,设置代理属性后,必须在@interface()遵守代理,否则报错,等等。
权限适配
这应该算iOS10系统适配的范畴,最近这两个都在弄,所以就直接和Xcode8适配一起写出来了。
在iOS10之后需要在Info.plist中,添加新的字段获取权限,否则在iOS10上运行会导致崩溃。下面是一些常用的字段,如果有缺少的麻烦各位评论区补充一下。
KEY权限Privacy – Camera Usage Description 相机
Privacy – Microphone Usage Description 麦克风
Privacy – Photo Library Usage Description 相册
Privacy – Contacts Usage Description 通讯录
Privacy – Bluetooth Peripheral Usage Description 蓝牙
Privacy – Location When In Use Usage Description 定位
Privacy – Location Always Usage Description 后台定位
Privacy – Calendars Usage Description 日历
参考资料:developer.apple
https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html
推送通知