我想在调试时启用NSLog,否则禁用它.一个非常简单的事情是:
#ifdef DEBUG
NSLog(@"My log");
#endif
Run Code Online (Sandbox Code Playgroud)
但所有这一切#ifdef并且#endif是无聊的...... :(所以我尝试其他的东西:( .pch是放的好地方)
#ifdef DEBUG
# define NSLog(text) NSLog(text);
#else
# define NSLog(text)
#endif
Run Code Online (Sandbox Code Playgroud)
这项工作非常好(不是递归的).但问题是NSLog有无限的论据.
void NSLog(NSString *format, ...)
Run Code Online (Sandbox Code Playgroud)
我如何解决这个问题才能在预处理器模式下工作?
- 编辑 -
此代码使您的NSLog更好:
#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)
#endif
Run Code Online (Sandbox Code Playgroud)