0
我在Xcode中编写宏时遇到新问题,并且在编写我自己的NSLog替换时遇到问题。我一直在使用一些例子,但想稍微调整它们,所以它们更像Log4。Objective-C宏的错误
我试图写一个第二个宏(或者理想情况下只是第一个委托),它需要一个日志级别的变量以及格式化的字符串和参数。但每次我尝试传递一个变量(在本例中为l)时,我都会遇到一个SIGART错误NSArgumentException。第一个宏工作正常
#define MLog(s,...) \
[MLog logFile:__FILE__ lineNumber:__LINE__ \
format:(s),##__VA_ARGS__]
#define MLogWithLevel(l,s,...) \
[MLog logFile2:__FILE__ lineNumber:__LINE__ logLevel:l \
format:(s),##__VA_ARGS__]
这是我的方法定义
+(void)logFile:(char*)sourceFile
lineNumber:(int)lineNumber
format:(NSString*)format, ...;
+(void)logFile2:(char*)sourceFile
lineNumber:(int)lineNumber
logLevel:(int)logLevel
format:(NSString*)format, ...;
例外:
+ [管理记录logFile2:行号:LOGLEVEL ::格式:]: 无法识别的选择发送到课 0x51600 2010-07-10 10:49:21408 明星[34433:207] *** 由于未被捕获而终止应用程序 例外 'NSInvalidArgumentException' 的,原因: '+ [管理记录 logFile2:LINENUMBER:LOGLEVEL ::格式:]: 无法识别的选择发送到 类0x51600'
我的测试日志消息:
MLogWithLevel(0: @"log at level %i", 0);
感谢
有人有他们的weetabix! – 2010-07-10 10:05:22
@tiegermain - 如果它解决了您的问题,请不要忘记勾选此答案。 – TechZen 2010-07-10 13:14:09
我会但发布后过早! – 2010-07-14 17:26:33