2010-04-12 65 views
4

可能重复:
Do I need to disable NSLog before release Application?禁止发布NSLog语句?

我不知道是否有人可以帮助我建立了一些的NSLog语句,以使他们在执行打印时,在“调试模式”,以安慰,但无法打印在“发布模式”中。我知道我需要添加像DEBUG = 1到Xcode的调试配置,但我找不到在哪里。另外我如何在我的代码中使用它?

NSLog(@"Print Always"); 
if(DEBUG) NSLog(@"Print only in debug"); 

有没有一个简单的方法来做到这一点?

EDIT_001: 我尝试以下this但关键现在似乎在“所有设置”仅上市,并表现为漂亮的名字。我应该使用一个是GCC_PREPROCESSOR_DEFINITIONS,所以我需要找到“预处理宏”,选择编辑和添加DEBUG=1 alt text

当你使用这个它只是一个增加的情况下(见下文)或一些马可删除凌乱的#ifdef/#endif标签。

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

回答在http:// stackoverflow中解释。COM /问题/ 2025471/DO-I-需要对禁用-的NSLog-前释放的应用程序。 – kennytm 2010-04-12 16:07:21

回答

3

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

您可以设置执行调试器命令来打印出任何内容的断点,并且可以设置断点以执行调试器命令,但不会停止执行。实际上,这个工作就像NSLog一样。

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

+0

我可以理解这一点,而且我经常使用调试器,但我确实喜欢在开发过程中向控制台输出输出,并且我并不总是希望将所有这些内容剥离出来,特别是因为它们可能是有助于开发未来的升级。 – fuzzygoat 2010-04-12 17:52:21

1

我用这个:

-(void)debugWinLog 

{

NSUserDefaults * defaultsDebug = [NSUserDefaults standardUserDefaults]; 
theDebugWin = [defaultsDebug boolForKey:@"logger"]; 

}

这就是所谓的awakeFromNib。 它检查应用程序plist文件为1或0 BOOL条目“记录器”

正常状态,如果关闭,但在调试时,然后可以打开或关闭终端中的意志。与正常的默认写入。 NSlog的语句如下所示:

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