作爲一個新的程序員,我發現了NSlog
的魔力,並通過我的代碼使用它。這在調試中非常有用(與NSZombieEnabled
一起)。是否有成本使用NSLog寬鬆?
我可以在模擬器上看到一個明確的性能打擊,因爲它打印出所有這些東西。我不認爲我看到任何設備上的這種打擊,但我不確定。
那麼所有的NSLogs
都沒有成本?它在設備上使用更多內存嗎?還是編譯器會忽略它們呢,就像我在爲一個設備編譯時做的註釋一樣?
編輯:
下面是我實現的,每建議從rano.
在我App_Prefix.pch
文件,我說:
// DLog is almost a drop-in replacement for NSLog
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
然後在我的Project Info
檢查器中,Debug
配置,在標題GCC 4.2 - Preprocessing,
下,我將值DEBUG
添加到名爲Preprocessor Macros.
作品像一個魅力 - DLog
輸出時,我建立Debug
版本和ALog
總是輸出。
另請參見[是否真的不應該在生產代碼上使用NSLog()?](http://stackoverflow.com/questions/300673/is-it-true-that-one-should-not-use -nslog-on-production-code) – 2010-11-09 00:55:55