iPhone Dev: как получить атрибуты формата строки, такие как NSLog - PullRequest
1 голос
/ 26 августа 2010

Я пытаюсь обернуть функцию 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 с параметрами, но как ??

заранее спасибо

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Спасибо ... это рабочая реализация

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

    }
2 голосов
/ 26 августа 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...