BOOL简化NSLogging的类别

时间:2013-05-09 16:21:59

标签: ios objective-c cocoa-touch

我正在尝试创建代码,这会做类似的事情。

NSLogBool(self.propertyName)

并且调试器控制台中的输出将是

"PropertyName is set to YES."

我可以如何实现这一点的任何提示,而且这段代码不依赖于特定的类,即我将其作为任何类可用的函数?

2 个答案:

答案 0 :(得分:4)

如果你需要它与任何特定的类分离,使用预处理器和C是你最好的选择。像这样的东西应该可以正常工作。

#define NSBOOLLog(x) CFILogBoolean(#x, x)

extern void CFILogBoolean(char *propertyName, BOOL val);

void CFILogBoolean(char *propName, BOOL val) {
    printf("%s is set to %s", propName, (val ? "YES" : "NO"));
}

只要将extern声明放入标题(可能是实用程序标题,甚至是一组常见的typedef等),这些标题对于编译单元是可见的,它可以自由使用而不必依赖于类

答案 1 :(得分:1)

在您的常规常量文件或项目中的MACRO文件中定义此.pch

#define NSLogBool(status)   NSLog(@"%@",(status)?@"YES":@"NO")

然后只需使用以下

检查状态日志
BOOL status = NO;
NSLog(@"%@",(status)?@"YES":@"NO");
NSLogBool(status);
status = YES;
NSLogBool(status);