Iphone 禁止发布NSLog语句?

Iphone 禁止发布NSLog语句?,iphone,objective-c,cocoa,xcode,Iphone,Objective C,Cocoa,Xcode,可能重复: 我想知道是否有人可以帮我设置一些NSLog语句,以便它们在“调试模式”下执行时打印到控制台,而不是在“发布模式”下打印。我知道我需要在Xcode中的调试配置中添加类似于DEBUG=1的内容,但我找不到位置。我如何在我的代码中使用它 NSLog(@"Print Always"); if(DEBUG) NSLog(@"Print only in debug"); 有没有一个简单的方法可以做到这一点 编辑\u 001: 我尝试了以下操作,但现在这些键似乎只在“所有设置”下列出,并且以良

可能重复:

我想知道是否有人可以帮我设置一些NSLog语句,以便它们在“调试模式”下执行时打印到控制台,而不是在“发布模式”下打印。我知道我需要在Xcode中的调试配置中添加类似于
DEBUG=1
的内容,但我找不到位置。我如何在我的代码中使用它

NSLog(@"Print Always");
if(DEBUG) NSLog(@"Print only in debug");
有没有一个简单的方法可以做到这一点

编辑\u 001: 我尝试了以下操作,但现在这些键似乎只在“所有设置”下列出,并且以良好的名称显示。我应该使用的是GCC_预处理器_定义,所以我需要找到“预处理器宏”,选择编辑并添加
DEBUG=1

当你开始使用它时,只需添加(见下文)或一些marco来删除凌乱的#ifdef/#endif标记

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

这是一个流行的解决方案:


请参阅有关使用
-DDEBUG=1
DEBUG=1

的注释。最好的解决方案不是首先使用NSLog,而是依赖调试器

可以设置执行调试器命令的断点以打印任何内容,也可以设置断点以执行调试器命令,但不停止执行。实际上,这就像NSLog一样有效


通过使用调试器进行日志记录,您不必担心删除日志语句。

请查看的答案。这里有一些很好的宏,非常有用。

我使用它:

-(void)debugWinLog
{

}

在awakeFromNib中调用。 它检查应用程序plist文件中BOOL条目“logger”的1或0

如果关闭,则为正常状态,但调试时可以在终端中随意打开或关闭。使用正常默认值写入。 NSlog状态如下所示:

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

答案在中解释。我看了一下,但在添加其他标记(见上文)时出错。好的,请看上面的编辑,也感谢链接,它确实帮助我走上了正确的轨道。我很感激这一点,我经常使用调试器,但我确实喜欢在开发时将输出输入到控制台,我并不总是想将所有输出都去掉以供发布,特别是因为它们在开发未来的升级时可能会很有用。
if ( theDebugWin) {NSLog (@"%@", windowState );}