2

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

NSLogBool(self.propertyName)

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

"PropertyName is set to YES."

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

4

2 回答 2

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 等)中,就可以自由使用它而不必依赖于类。

于 2013-05-09T16:30:56.460 回答
1

MACRO在您的通用常量文件或项目中的文件中定义它.pch

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

然后只需使用以下命令检查状态日志

BOOL status = NO;
NSLog(@"%@",(status)?@"YES":@"NO");
NSLogBool(status);
status = YES;
NSLogBool(status);
于 2013-05-09T16:34:51.390 回答