我想在調試時啓用NSLog,否則禁用它。一個很簡單的一件事是:在調試模式下啓用和禁用NSLog
#ifdef DEBUG
NSLog(@"My log");
#endif
但是,所有這些#ifdef
和#endif
是borring ... :(所以我嘗試其他的事情:(.PCH是把它的好地方)
#ifdef DEBUG
# define NSLog(text) NSLog(text);
#else
# define NSLog(text)
#endif
這做工非常精細(不遞歸)。但問題是,NSLog的具有無限的論點。
void NSLog(NSString *format, ...)
我如何解決這個問題在預處理模式下工作?
- 編輯 -
此代碼使您的NSLog更好:
#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)
#endif
對於尼斯問題+1。關於此主題的完整可重用組件http://mobile.tutsplus.com/tutorials/iphone/customize-nslog-for-easier-debugging/ –
我遵循鏈接中的指南。但我得到了以下編譯錯誤:**體系結構x86_64的未定義符號: ld:找不到體系結構x86_64的符號(s) clang:錯誤:鏈接器命令失敗,退出代碼1(使用-v查看調用)**請幫忙@MahbuburRAaman – Gon
@Gon,錯誤**架構x86_64的未定義符號:找不到架構x86_64 **的ld:symbol(s)出於以下原因。例如,對於缺少的庫或其他情況,請看下面的SO資源http://stackoverflow.com/questions/18408531/xcode-build-failure-undefined-symbols-for-architecture-x86-64,http: //stackoverflow.com/questions/6231368/objective-c-undefined-symbol-compilation-counting-symbols-for-architecture-x86-64-in-objective-c,錯誤。 –