2010-05-12 98 views
15

接下來是最後一個問題:Log method name in Obj-C。我只是想知道是否有辦法打印出變量名稱。例如:打印出變量名稱objective-C

NSString *name = "vodkhang"; 
NCLog(@"%@", name); 

,我希望輸出應該是:

name: vodkhang 

只是爲了總結以前的帖子,目前,我可以打印出的類名,方法名和行號時我叫

NCLog(@"Hello World"); 
<ApplicationDelegate:applicationDidFinishLaunching:10>Hello world 

#define NCLog(s, ...) NSLog(@"<%@:%d> %@", __FUNCTION__, __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) 

回答

35
#define logIntVariable(x) NSLog(@"Value of %s = %d",#x, x) 


- (void) myRoutine { 
    int intValue = 5; 

    logIntVariable(intValue); 
} 
+12

一般原理是,當在'#define'的主體內部放置一個'#'時,預處理器用傳遞給宏的* exact *表達式的C字符串替換它。當你傳遞一個變量名時,你會得到這個名字。如果您傳遞一個表達式,它將完整地重現該表達式,而不是評估結果。 – 2010-05-13 04:56:43

+0

@奎因:我明白了。感謝那 – vodkhang 2010-05-14 03:54:54