2011-09-20 54 views
1

我試圖找出如何從我的項目剝離調試日誌記錄,當我建立它的釋放和這裏找到一個很好的線程時:Is it true that one should not use NSLog() on production code?編譯器警告努力的#define DEBUG_MODE添加到我的prefix.pch文件

有點低於答案另一位用戶解釋瞭如何啓用/禁用DEBUG_MODE定義,所以我進入了完全按照解釋,即

在項目設置「預處理器宏」,調試行它已經讀取「調試= 1 「,所以我在字符串的末尾添加了」debug_mode = 1「,以便它現在讀取」debug = 1 debugmode = 1「(其中包含$ {inherited},不管是...)

不過,我現在得到一個編譯黃色預警稱:

詞彙或預處理器的問題,「DEBUG_MODE」宏我prefix.pch文件重新定義該行我加入其中:

#define DEBUG_MODE 

#ifdef DEBUG_MODE 
    #define DebugLog(s, ...) NSLog(@"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) 
#else 
#define DebugLog(s, ...) 
#endif 

,如果有人能夠解釋這個定義問題,我會很感激。

回答

2

只是將其更改爲:

#ifdef DEBUG 
    #define DebugLog(s, ...) NSLog(@"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) 
#else 
    #define DebugLog(s, ...) 
#endif 

取出#define DEBUG_MODE並從「預處理宏」 刪除debugmode=1,你是好去。

您得到的錯誤是由於在「預處理器宏」中已經定義的#define DEBUG_MODE所致。

+0

謝謝你,那就是我所做的:)但我仍然不明白警告的含義,請問你能解釋一下嗎? – Mathias

+0

這個解決方案並沒有完全解決我的問題。我有一套「if elif elif elifs」,在其中一種情況下,我重新定義了一個覆蓋頂部默認設置的值。 ...如果你明白我的意思。代碼看起來很乾淨,似乎編譯和運行完美,但惱人地有這個警告。 –