2010-05-12 14 views
15

Continúa de la última pregunta aquí: Log method name in Obj-C. Me preguntaba si también hay una forma de imprimir el nombre de la variable. Por ejemplo:Imprima el nombre de la variable objetivo-C

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

y espero que la salida debe ser:

name: vodkhang 

Sólo para resumir el post anterior, en la actualidad, puedo imprimir el nombre de la clase, nombre del método y el número de línea cuando me llamo

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

con

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

Respuesta

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


- (void) myRoutine { 
    int intValue = 5; 

    logIntVariable(intValue); 
} 
+12

El principio general es que cuando coloca un '#' delante de un argumento dentro del cuerpo de un '# define', el preprocesador lo reemplaza con una cadena C de la expresión * exact * pasada a la macro. Cuando pasa un nombre de variable, obtendrá ese nombre. Si pasa una expresión, reproducirá la expresión en su totalidad, no el resultado evaluado. –

+0

@Quinn: lo tengo. Gracias por eso – vodkhang

Cuestiones relacionadas