在搜索此內容時,我只能找到其他語言的信息。我想知道編寫條件statments如最佳實踐:Xcode - 條件開發或生產模式
if (DEV_MODE){
//do something
}else{
//do the real stuff
}
然後在一些全球性的文件或關閉設置DEV_MODE,所以我只需要改變,要開啓或關閉,而不是在多個更改代碼的地方。我有一些想法,但我正在尋找建議,以便做到這一點。
在搜索此內容時,我只能找到其他語言的信息。我想知道編寫條件statments如最佳實踐:Xcode - 條件開發或生產模式
if (DEV_MODE){
//do something
}else{
//do the real stuff
}
然後在一些全球性的文件或關閉設置DEV_MODE,所以我只需要改變,要開啓或關閉,而不是在多個更改代碼的地方。我有一些想法,但我正在尋找建議,以便做到這一點。
試試這個:
#ifdef DEBUG
// do stuff
#endif
目前Xcode版本自動在新項目中設置此宏。轉到您的項目構建設置以確保。如果沒有的話,你必須自己動手添加:
是的,我的設置反映了這一點。所以我不需要改變任何事情嗎?我假設當我使用AppStore方案時,DEBUG將自動爲0。 – soleil
在您的項目設置中有一個名爲「預處理器宏」的部分。在這一節中,您可以爲您的Debug版本添加一個字符串,例如「DEV_MODE」或任何您想要的。然後,您可以按照上面列出的條件進行操作,當您的應用程序爲「發佈」或任何其他不包含宏的設置構建時,您的支票應該會失敗。
預處理程序變量是你想要的東西,在你的構建配置定義一個變量(DEV_MODE
例如),然後用預處理的檢查,如:
#if DEV_MODE
//dev mode code
#else
//non-dev mode code
#endif
更好使用'DEBUG',默認情況下它是由Xcode定義/未定義的(當然這不是使用另一個IDE /一個命令行工具鏈的情況)。 – 2012-09-17 17:39:51
(這個問題是不相關的Xcode)
這就是說,而不是與C風格的IF污染你的代碼,您可以使用預處理器指令來過濾調試和發佈模式。據我所知,如果在測試模式下將DEBUG
宏定義爲1,並且在發佈模式下不定義它,這是常見的做法。 (另外,Xcode可以爲你定義這個,我已經看到這種行爲是依賴的。)原因是預處理器的使用更具可讀性,因爲它沒有進入縮進,它更好地與代碼可視化。綜上所述,嘗試
#ifdef DEBUG
// do debug stuff here
#else
// do release stuff here
#endif
一個額外的參數進行預處理宏是可以實現條件的全局命名空間,你不能用C代碼中。一,即,用預處理宏,你可以寫
#ifdef DEBUG
int functionOne()
{
}
#else
char *functionTwo(int a)
{
}
#endif
你不能沒有預處理做到這一點。
感謝您的解釋。 – soleil
你想在編譯時確定DEV_MODE嗎?或者你想在運行時改變'DEV_MODE'而不用重新編譯? –