iPhone Dev:如何获取像NSLog这样的字符串格式属性

时间:2010-08-26 07:55:38

标签: iphone string format nslog

我正在尝试包装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但是如何?

提前结束

2 个答案:

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

    }