2009-09-22 17 views
17

Ich möchte Trace-Nachrichten des aktuellen Klassen- und Methodennamens für alle Klassen in meinem Projekt speichern können.Den Namen der aktuellen Methode dynamisch abrufen

Gibt es eine Möglichkeit, die aktuelle Methode Namen zur Laufzeit zu erhalten, ähnlich zu:

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

wo selbst eine Klasse von NSObject abgeleitet ist?

Antwort

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

_cmd ist ein verstecktes Argument (wie self), dass alle Objective-C-Methoden erhalten. Sein Wert ist der Selektor, mit dem die Methode aufgerufen wurde.

+0

i SEL verwenden myRunTimeSelector = _cmd. Danke – Alok

+0

Richtige Lösung inklusive Erklärungen. Vielen Dank. –

18

EDITED: Ich denke, diese Methode generisch ist ..., check it out ..

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

Ich entschuldige mich, wenn ich herauskomme, herablassend, nicht zu ... Ich fand diese Lösung allgemeiner zu sein ... – Nishant

+2

große Antwort. Ich setze es in ein Makro, wie folgt: #define LOGME NSLog (@ "% s", \ _ \ _ PRETTY_FUNCTION \ _ \ _); –

+0

Große Antwort @Nishant .. Es gibt sowohl die Klasse Name und der Name der Methode für eine gute Fehlersuche ... –

1

Dies funktioniert auch:

NSLog(@"%@", [NSString stringWithUTF8String:__func__]) 
Verwandte Themen