2010-08-26 31 views
1

我想包装NSLog函数只是为了添加一些信息,每次我登录的东西,但我有一个问题。iPhone开发:如何获得像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,但如何?

thaks提前

回答

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]; 
     } 

    } 
+0

我建议你把整个函数代码放在“if”语句中if(level> = LEVEL)'...... – 2010-08-26 09:30:11

+0

对不起。这是我的错..写错了这里。 我会编辑 – Achille 2010-08-26 10:43:15