可能重复:
Do I need to disable NSLog before release Application?
我想知道是否有人可以帮我设置一些NSLog语句,以便在“调试模式”下执行时打印到控制台但不以“发布模式”打印。我知道我需要在Xcode的调试配置中添加类似DEBUG = 1
的内容,但我找不到位置。另外我如何在我的代码中使用它?
NSLog(@"Print Always");
if(DEBUG) NSLog(@"Print only in debug");
有一种简单的方法吗?
EDIT_001:
我尝试跟随this,但现在键似乎只列在“所有设置”下,并且呈现为好名字。我应该使用的是GCC_PREPROCESSOR_DEFINITIONS,所以我需要找到“预处理器宏”,选择编辑并添加DEBUG=1
当您使用它时,只需添加(见下文)或某些marco来删除凌乱的#ifdef / #endif标记。
NSLog(@"You always see me?");
#ifdef DEBUG
NSLog(@"Only in DEBUG");
#endif
答案 0 :(得分:3)
这是一种流行的解决方案:
http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog
查看有关使用-DDEBUG=1
或DEBUG=1
的评论。
答案 1 :(得分:3)
最好的解决方案不是首先使用NSLog,而是依赖于调试器。
您可以设置执行调试器命令的断点来打印任何内容,您可以设置断点以执行调试器命令但不能停止执行。在实践中,这就像NSLog一样。
通过使用调试器进行日志记录,您不必担心删除日志语句。
答案 2 :(得分:1)
请查看How to print out the method name and line number and conditionally disable NSLog?的答案。有一些不错的宏可以非常有用。
答案 3 :(得分:1)
我用这个:
-(void)debugWinLog
{
NSUserDefaults * defaultsDebug = [NSUserDefaults standardUserDefaults];
theDebugWin = [defaultsDebug boolForKey:@"logger"];
}
在awakeFromNib中调用。 它检查应用程序plist文件为BOOL条目“logger”
的1或0正常状态,如果关闭,但在调试时,您可以在终端中随意打开或关闭它。使用正常的默认值写入。 NSlog的声明如下:
if ( theDebugWin) {NSLog (@"%@", windowState );}