目标C - 定义宏以调用方法



我想定义一个宏来调用以下内容,这可能吗?我也希望它接受格式字符串。

- (void)logString:(NSString *)string withLogLogLevel:(LogLevel)logLevel
{
   // Sav log to file
}
DLog("text");
[Logger logString:text withLogLevel:LogLevelDebug];
ILog("text");
[Logger logString:text withLogLevel:LogLevelInfo];
ELog("text");
[Logger logString:text withLogLevel:LogLevelInfo];

假设logString:withLogLevel:除了日志级别之外还采用单个字符串参数,这应该是可能的:

#define DLog(x) [Logger logString:(x) withLogLevel:LogLevelDebug]

请注意宏参数两边的括号,当使用复合表达式调用宏时,它很有用。

假设记录器接受NSString对象,而不是 C 字符串,您应该像这样使用宏:

DLog(@"Text");

但是,在这种情况下,不清楚为什么更喜欢宏而不是简单的函数调用:

void DLog(NSString *str) {
    [Logger logString:str withLogLevel:LogLevelDebug];
}

最新更新