在构建分发应用程序时,是否存在离开NSLog语句的危险?

bpa*_*apa 15 iphone nslog

出于某种原因,在我的开发周期中,我发现自己删除了我插入的NSLog语句以帮助调试.我真的不知道为什么我有这个习惯,我就是这样做的.

有时,在开发过程中,我会发现我遇到了以前遇到过的问题,然后最终重新添加了一个旧的NSLog语句.然后再删除它.

是否有任何理由删除NSLog语句?根据我离开一两次的经历,没有引起任何应用拒绝.而且,据我所知,当应用程序处于分发状态时,它们不会记录任何内容(如果我错了,请纠正我),它们似乎并没有伤害任何东西.是否有我应该担心的性能影响?

con*_*are 21

我所做的是添加一个只在我处于调试模式时才进行日志记录的宏.把它放在你的<APP_NAME>_Prefix.pch文件中

#ifdef DEBUG
#define DebugLog( s, ... ) NSLog( @"<%p %@:%d (%@)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__,  NSStringFromSelector(_cmd), [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... ) 
#endif
Run Code Online (Sandbox Code Playgroud)

作为常规日志的奖励,您将获得文件名,方法名称和行号.

然后在项目信息中,仅在调试版本下添加它.它User-defined在GCC_PREPROCESSOR_DEFINITIONS下的部分中:

DEBUG

然后使用DebugLog替换项目中的任何NSLog(它采用与NSLog相同的args),您不必担心实时释放调试语句.

在回答您的问题时,日志记录可能会降低应用程序的性能,除非您需要它们来帮助调试,我会将它们排除在外.


Vla*_*mir 6

有一个(imo)好的帖子,包括可能的解决方案.