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编译问题
iOS9.3 __weak reference
Xcode 7.3 cannot create __weak reference in file using manual reference counting
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

  • Deployment Postprocessing
    ipa进行包体积优化的时候,一般需要去除无用的符号信息,但是根据苹果的文档,要使得Strip Style生效,还需要对这个编译选项设置为YES才有用
    参考链接
    Symbolification: Shipping Symbols
    Build Setting Reference
    iOS可执行文件瘦身方法

  • Defines Module
    当需要OCSwift混编的时候,需要将这个选项设置为YES
    在一个项目中同时使用Swift和Objective-C代码混合编程的方法
    Importing Code from Within the Same Framework Target

  • Force 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

你可能感兴趣的:(Xcode的build setting)