一、 Architectures設置
Architectures: 是指項目默認將會支持的arm處理器架構。默認是Standard architectures,包含了armv7(32位處理器)和arm64(64位處理器)。
Build Active Architecture Only: 是否只為當前連接的(活躍的)手機生成二進制包。一般Debug 設置為YES, Release設置為NO。 Debug時一般只會連接一個手機,這時設置為YES, 就只會生成這個手機處理器指令集的二進制包,這樣debug時比較快。但Release時是需要發布ipa包給各種各樣的手機使用的,所以必須設置NO為所有指令集的手機生成二進制包。
Valid Architectures:有效的指令集架構,設置這個項目只會生成哪些指令集對應的二進制包。因為我們有armv7 、armv7s、arm64這三種指令集的CPU。
如果我們設置了有效的指令集是armv7,那么所有的手機都可以使用,只是高版本的手機并沒有發揮它的高效能而已。但是如果只設置了支持arm64,因為低版本的手機并不支持arm64這種高效的指令集,所以低版本的手機將不能使用該app。 通常我們會設置為armv7和arm64。 iPhone5C 是armv7s的指令集,由于高指令集有向下兼容的特性,所以這樣的設置在iPhone5C 上只能發揮armv7的效果(iPhone5C 不支持arm64指令集,但能支持armv7)。
我們的項目支持哪些指令集要看 Architectures 和 Valid Architectures的交集。
二、設置項目運行模式
設置我們的項目是debug模式運行還是release模式運行
-
點擊Edit Scheme進入編輯模式
Edit Scheme.png -
依次設置我們的項目(或ipa包)run、test、profile、Analyze、Acrhive時的模式。一般在開發階段都設置為Debug, 在發布ipa時設置為Release.
設置ipa運行模式.png
三、項目運行時的優化程度
在優化級別下面我們可以看到:
Debug模式: 編譯器不會對我們的項目做任何優化(主要是NSLog是否打印)。
Release模式:編譯器將進行優化,不再打印我們在項目中添加的NSLog等信息。
所以我們在發布版本時應該全部設置為Release模式,有利于快速運行。當然不設置為Release模式也可以正常發布,只是優化沒有那么明顯。
注意:有時我們從SVN上下載一個新的項目版本時會發現NSLog和po都沒有任何輸出信息,這時就可以去檢查下1.Edit Scheme是否為Debug模式 2. Optimizitation Level 下的Debug 是否為None。