【发布时间】:2013-12-25 19:30:25
【问题描述】:
#define LogMsg(msg) ((DebugMode)?NSLog(@"<%@:%@:%d:%@>", NSStringFromClass([self class]), NSStringFromSelector(_cmd), __LINE__,msg):NO)
有了这个宏,我可以打印出来:
LogMsg(@"Test");
或者
NSArray *testArray = @[@"one",@"two"];
LogMsg(testArray);
如何使用宏替换来做同样的事情,它也将接受两个参数,如 NSLog 并且仍然能够以我正在使用上面的形式打印数组? 示例:
NSLog (@"test: %@",test);
- 我不希望为此使用第 3 方类,并使用宏解决上述问题。
【问题讨论】:
-
您的第一个示例
NSLog(testArray)不正确,并在运行时崩溃。第一个参数必须是格式字符串。 -
我完全搞砸了这个问题。我已经用我正在使用的正确宏更新了问题。
-
你能把LINE的宏也发一下吗?
-
LINE没有宏
-
有一些技巧可以用来找出宏的参数数量,并根据它选择不同的宏来扩展。但我不记得该怎么做。
标签: ios objective-c nslog