2010-08-26 51 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

相關問題