Die Laufzeit von Objective-C scheint ziemlich robust zu sein, also habe ich mich gefragt, ob es eine Möglichkeit gibt, den Namen der Funktion zu protokollieren, die die aktuelle Funktion genannt hat.Drucken Sie den Namen der aufrufenden Funktion in das Debug-Protokoll
Meine Situation ist, dass eine Reihe von Dingen zu einer Eigenschaft zuweisen, und anstatt einen Haltepunkt zu setzen und den Aufruf Stapel jedes Mal zu untersuchen, möchte ich nur NSLog
den Namen der Funktion, die die Eigenschaft setzt, entlang mit dem neuen Wert.
So ist es möglich, zur Laufzeit Zugriff auf den Call-Stack zu bekommen?
Das funktioniert gut, wenn Sie 'sizeof (addr)' durch 'sizeof (addr)/sizeof (void *)' (oder nur 2) ersetzen. Vielen Dank! – Brian
Behoben. Oh, und Foundation stellt dies wirklich wirklich einfach über '- [NSThread callStackSymbols]', die ein Array zurückgibt. Sie könnten es als 'NSArray * syms = [[NSThread currentThread] callStackSymbols]; if ([symms count]> 1) NSLog (@ "caller:% @", [symys objectAtIndex: 1U]; ' –
letzter Kommentar:' callStackSymbols' ist eine Klassenmethode. Sie müssen sie als '[NSThread callStackSymbols]' verwenden – user102008