Xcode的build setting

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下也能够支持__weakruntime特性了。
参考链接
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服务器上。所以如果你想要使用该技术的话,要先做以下步骤

  1. 将这个设置项设置为YES
  2. 标记资源
  3. 使用指定的api按照tagid下载资源

参考链接
关于iOS9的APP瘦身
按需加载资源开发指南
On-Demand Resources Guide

推荐阅读更多精彩内容