Debug宏應(yīng)該在哪里定義?
iOS系統(tǒng)本身就區(qū)分了Configurations選項讓開發(fā)者去修改對應(yīng)的開發(fā)環(huán)境配置, 但是因為很多開發(fā)者卻又在同一個Configuration環(huán)境中自定義了開發(fā)環(huán)境配置的開發(fā), 使得iOS系統(tǒng)本身的配置成為了擺設(shè), 僅僅用于區(qū)分打包方式選項和證書配置剃诅。
網(wǎng)絡(luò)環(huán)境切換是每一個互聯(lián)網(wǎng)App開發(fā)者都會頻繁用到的功能, 那么大家都是用什么樣的方式在切換環(huán)境的呢?我本人接觸的項目中最多的就是在預(yù)編譯頭文件里面寫一行宏定義, 然后根據(jù)宏定義去判斷當(dāng)前的環(huán)境巷送。
最典型的例子
是在預(yù)編譯頭pch文件中添加一行代碼#define DEBUG 1。然后通過這個DEBUG參數(shù)去判斷當(dāng)前環(huán)境是否處于開發(fā)網(wǎng)絡(luò)或者生產(chǎn)網(wǎng)絡(luò)環(huán)境矛辕。
使用DEBUG宏去判斷判斷開發(fā)環(huán)境還是生產(chǎn)環(huán)境沒有任何問題, 關(guān)鍵的問題是我們在什么時候去定義這個宏和怎么去動態(tài)配置這個宏笑跛。
開發(fā)環(huán)境的切換在代碼中最實用的還是宏定義, 那么我們怎么樣才能夠讓宏定義動態(tài)可配置呢?
其中一種辦法就是使用GCC預(yù)編譯頭參數(shù)GCC_PREPROCESSOR_DEFINITIONS。
- 添加Build Configuration
打開項目進入Xcode的主界面聊品。選擇project->info飞蹂,找到Configuration,點擊下方的“+”翻屈。
從圖中可以看到兩個已經(jīng)添加好的Configuration:Debug和Release陈哑。
選擇“duplicate debug configuration”,添加一個新的configuration伸眶,命名為Test惊窖。
- 在Project文件下的Build Settings對預(yù)編譯宏定義進行默認(rèn)賦值。在Xcode9下的路徑為Build Settings->Apple LLVM 6.x Preprocessing->Preprocessor Macros
這里添加的
DEBUG
厘贼、Test
就會對應(yīng)在項目里生成宏定義界酒。
- 新建并配置xcconfig文件
common + "n", 選擇 iOS -> Other -> Configuration settings file
新建4個xxconfig文件,我采用一下命名:
commonConfig中放入通用的配置涂臣,另外三個Config放入各自對應(yīng)的配置盾计。
然后在PCH文件中根據(jù)判斷Debug、Test赁遗、Release來引人需要的頭文件
#if Test
#import "ReleaseTestConfig.xcconfig"
#elseif DEBUG
#import "DebugConfig.xcconfig"
#else
#import "ReleaseConfig.xcconfig"
#endif