Xcode里面有很多很神奇的编译设置,特别是Xcode7以后又有很多的变化,这里做一个归纳
- Enable Testablity
这个选项的意思是,当你需要用到UI测试的时候,有一个关键字@testable
,用于自动引入要测试的类,譬如
@testable import TestViewController
建议在debug状态下开启该选项
参考链接
UI Testing in Xcode
How to Implement UI Testing in an Existing iOS App
Xcode:为你的项目集成单元测试(unit tests)时记得避开这些坑
- Weak References in Manual Retain Release
如果你升级了xcode7.3以后的版本,有可能会在编译时报错,主要针对的是MRC文件混编的场景。在我们的项目中也有遇到类似的问题,譬如如下代码
+ (id)getNewValueFromObject:(__weak id)object oldValue:(__weak id)oldValue property:(__weak MJProperty *)property;
在MRC文件混编的时候会出错,解决办法是将这个编译项设置为YES就好了。简单来说就是在MRC下也能够支持__weak
的runtime特性了。
参考链接
xcode7.3编译问题
<a href="https://segmentfault.com/q/1010000004670789">iOS9.3 __weak reference</a>
<a href="http://stackoverflow.com/questions/36147625/xcode-7-3-cannot-create-weak-reference-in-file-using-manual-reference-counting">Xcode 7.3 cannot create __weak reference in file using manual reference counting</a>
Xcode 7.3b4, non-arc, cannot create __weak reference
Xcode 7.3 Cannot create __weak reference in file using manual reference counting
- Enable On Demand Resources
这是IOS9的新特性,跟App减少包体积有关。不过实际情况不太乐观,简单来说他的实现方式是,App先标记好哪些图片是需要按需加载的,然后提交全量包到AppStore。当用户下载App的时候,将不会下载标记的图片,等到App需要后加载资源的时候再下载。资源文件的托管是在AppStore服务器上。所以如果你想要使用该技术的话,要先做以下步骤
- 将这个设置项设置为YES
- 标记资源
- 使用指定的api按照tagid下载资源
参考链接
关于iOS9的APP瘦身
按需加载资源开发指南
On-Demand Resources Guide
Deployment Postprocessing
对ipa进行包体积优化的时候,一般需要去除无用的符号信息,但是根据苹果的文档,要使得Strip Style生效,还需要对这个编译选项设置为YES才有用
参考链接
Symbolification: Shipping Symbols
Build Setting Reference
iOS可执行文件瘦身方法Defines Module
当需要OC和Swift混编的时候,需要将这个选项设置为YES
在一个项目中同时使用Swift和Objective-C代码混合编程的方法
Importing Code from Within the Same Framework TargetForce Package Info Generation
Inline Methods Hidden
Symbols Hidden By Default
Enable Modules(C and Objective-C)
Enable Strict Checking of objc_msgSend Calls
Compress PNG Files
GCC_THUMB_SUPPORT
Skip Install