删除的NSLog从发行版本[复制](Remove NSLog from Release Builds

2019-10-17 07:04发布

可能重复:
难道不应该在生产代码中使用的NSLog()?
我是否需要发布应用前禁用的NSLog?

我需要删除所有这些都存在于我的项目发布版本在NSLOGs。 我曾尝试使用下面的代码试过,但通过电话仍在访问的身材,依旧的NSLog在控制台中显示出来。

#ifdef DEBUG
#define debug_NSLog(format, ...) NSLog(format, ## __VA_ARGS__)
#else
#define debug_NSLog(format, ...)
#endif

Answer 1:

简单地删除NSLogs:

#define NSLog(s,...)

一个#define没有指定将取代任何一个替换,删除该匹配什么#define 。 这适用于简单的记号定义与上面的函数式定义。



Answer 2:

使用下面的代码

#ifdef DEBUGGING
# define DBLog(fmt,...) NSLog(@"%@",[NSString stringWithFormat:(fmt), ##__VA_ARGS__]);
#else
# define DBLog(...)
#endif 

确保编译器标志设置正确。

此外,当您检查控制台,你检查,如果你使用的释放模式?



Answer 3:

用这个

#if TARGET_IPHONE_SIMULATOR
#define NSLog(fmt,...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define NSLog(...)
#endif

这将打印NSLog ,如果你是在模拟器上运行它..



文章来源: Remove NSLog from Release Builds [duplicate]