2009-09-22 12 views
17

Me gustaría poder poner mensajes de seguimiento del nombre de clase actual y el nombre del método para todas las clases de mi proyecto.Recuperación dinámica del nombre del método actual

¿Hay una manera de conseguir el nombre del método actual en tiempo de ejecución, similar a:

NSLog(@"classname: %@", [self className]); 

donde uno mismo se deriva una clase de NSObject?

Respuesta

35
NSLog(@"method name: %@", NSStringFromSelector(_cmd)); 

_cmd es un argumento oculto (como self) que todos los métodos de Objective-C reciben. Su valor es el selector que se utilizó para llamar al método.

+0

utilizo SEL myRunTimeSelector = _cmd. Gracias – Alok

+0

Solución adecuada que incluye explicaciones. Gracias. –

18

EDITADO: creo que este método es más genérico ... él hacia fuera ..

NSLog(@"%s", __PRETTY_FUNCTION__); 
+0

mis disculpas si salgo como condescendiente, no significa que ... Encontré esta solución para ser más genérico ... – Nishant

+2

gran respuesta. Lo puse en una macro, así: #define LOGME NSLog (@ "% s", \ _ \ _ PRETTY_FUNCTION \ _ \ _); –

+0

Great Answer @Nishant .. Está dando tanto el nombre de la clase como el nombre del método para una buena depuración ... –

1

Esto también funciona:

NSLog(@"%@", [NSString stringWithUTF8String:__func__]) 
Cuestiones relacionadas