2010-04-12 66 views
4

可能重複:
Do I need to disable NSLog before release Application?禁止發佈NSLog語句?

我不知道是否有人可以幫助我建立了一些的NSLog語句,以使他們在執行打印時,在「調試模式」,以安慰,但無法打印在「發佈模式」中。我知道我需要添加像DEBUG = 1到Xcode的調試配置,但我找不到在哪裏。另外我如何在我的代碼中使用它?

NSLog(@"Print Always"); 
if(DEBUG) NSLog(@"Print only in debug"); 

有沒有一個簡單的方法來做到這一點?

EDIT_001: 我嘗試以下this但關鍵現在似乎在「所有設置」僅上市,並表現爲漂亮的名字。我應該使用一個是GCC_PREPROCESSOR_DEFINITIONS,所以我需要找到「預處理宏」,選擇編輯和添加DEBUG=1 alt text

當你使用這個它只是一個增加的情況下(見下文)或一些馬可刪除凌亂的#ifdef/#endif標籤。

NSLog(@"You always see me?"); 
#ifdef DEBUG 
NSLog(@"Only in DEBUG"); 
#endif 
+0

回答在http:// stackoverflow中解釋。COM /問題/ 2025471/DO-I-需要對禁用-的NSLog-前釋放的應用程序。 – kennytm 2010-04-12 16:07:21

回答

3

最好的解決方案不是首先使用NSLog,而是依賴於調試器。

您可以設置執行調試器命令來打印出任何內容的斷點,並且可以設置斷點以執行調試器命令,但不會停止執行。實際上,這個工作就像NSLog一樣。

通過使用調試器來執行日誌記錄,您不必擔心刪除日誌語句。

+0

我可以理解這一點,而且我經常使用調試器,但我確實喜歡在開發過程中向控制檯輸出輸出,並且我並不總是希望將所有這些內容剝離出來,特別是因爲它們可能是有助於開發未來的升級。 – fuzzygoat 2010-04-12 17:52:21

1

我用這個:

-(void)debugWinLog 

{

NSUserDefaults * defaultsDebug = [NSUserDefaults standardUserDefaults]; 
theDebugWin = [defaultsDebug boolForKey:@"logger"]; 

}

這就是所謂的awakeFromNib。 它檢查應用程序plist文件爲1或0 BOOL條目「記錄器」

正常狀態,如果關閉,但在調試時,然後可以打開或關閉終端中的意志。與正常的默認寫入。 NSlog的語句如下所示:

if (theDebugWin) {NSLog (@"%@", windowState);}