我正在尝试包装NSLog函数,只是为了在每次登录时添加一些信息,但是我遇到了问题。
NSLog声明是
void NSLog(NSString *format, ...) __attribute__((format(__NSString__,1,2)))
这允许在调用中具有多个参数
NSLog(@"first %@ second %@ third %d,string,string,number);
我的声明功能类似
void LogUtil(id sender, int level, NSString *str, ...) __attribute__((format(__NSString__,3,4)))
,实施只是
void LogUtil(id sender, int level, NSString *str, ...){
if(level>=LEVEL){
NSLog(@"<%@> %@",sender,str);
}
}
所以我可以把它称为
NSLog(self, 1, @"first %@ second %@ third %d,string,string,number);
但在这种情况下,不会评估属性。
所以,我认为我必须在我的实现中做一些事情来格式化str与paramters但是如何?
提前结束
答案 0 :(得分:2)
答案 1 :(得分:2)
谢谢......这是有效的实施
void LogUtil(id sender, int level, NSString *str, ...){
if(level>=LEVEL){
va_list args;
va_start(args,str);
NSString *format=[[NSString alloc] initWithFormat:str arguments:args];
va_end(args);
NSLog(@"<%@> %@",sender,format);
[format release];
}
}