objective-c - 在 DEBUG 模式下启用和禁用 NSLog

标签 objective-c cocoa nslog

我想在调试时启用 NSLog,否则禁用它。一个很简单的事情是:

#ifdef DEBUG
NSLog(@"My log");
#endif

但是所有这些 #ifdef#endif 都很无聊...... :( 所以我尝试了其他东西:(.pch 是放置它的好地方)

#ifdef DEBUG
#   define NSLog(text) NSLog(text);
#else 
#   define NSLog(text) 
#endif

这项工作非常好(不是递归的)。但问题是 NSLog 有无限的参数。

void NSLog(NSString *format, ...)

如何解决这个问题以在预处理器模式下工作?

-- 编辑--

这段代码让你的 NSLog 变得更好:

#ifdef DEBUG
    #define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
    #define NSLog(...)
#endif

最佳答案

这应该可以解决问题:

 #ifdef DEBUG
 #   define NSLog(...) NSLog(__VA_ARGS__)
 #else 
 #   define NSLog(...) (void)0
 #endif

关于objective-c - 在 DEBUG 模式下启用和禁用 NSLog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6552197/

相关文章:

c++ - dylib 中的重载运算符删除替换了 OSX 中的系统运算符

iphone - 何时释放 NSDictionary 实例及其所有值?

xcode - 找出本地网络中设备的 bonjour 名称的最简单方法是什么?

objective-c - NSlog() 转 NSString

objective-c - 调试 SIGSEGV 崩溃

iphone - UITableViewCell 右边有图片?

ios - 从 localizable.string(意大利语)本地化 ios 中的 HTML 文本字符串文件

ios - 访问 iOS 设备的控制台输出

iphone - Objective C - 将科学记数法 "String"转换为 Double

iphone - 返回一个静态常量[]