Wie überprüft man "super" beim Debuggen von objc in gdb

8

Von innerhalb von xcode gibt gdb Folgendes:

%Vor%

So weit so gut ... Aber:

%Vor%

Im Interesse der Klarheit, was ich wirklich tun möchte, senden Sie eine Nachricht an super beim Debuggen. Zum Beispiel möchte ich so etwas tun:

%Vor%

Aber wie referenziere ich super aus der gdb-Umgebung? Danke!

    
Jim 30.05.2011, 00:13
quelle

2 Antworten

4

Etwas, das Sie beachten sollten, ist super == self . Es ist derselbe Objektzeiger, aber das Schlüsselwort super teilt dem Nachrichtenabfertigungscode mit, nach einer Implementierung zu suchen, die eine Ebene zurück in der Klassenhierarchie ist.

    
NSResponder 30.05.2011 01:52
quelle
4

Hey, wir waren rede gerade darüber! Das Wort super hat keine Auswirkungen, außer als Empfänger einer Nachricht, also [super doSomething] . Es ist nur eine Anmerkung für den Compiler, dass es nach der Implementierung einer Methode in der Oberklasse und nicht nach dem aktuellen Klassenobjekt suchen sollte.

Wenn Sie das tatsächliche Superklassenobjekt eines Objekts verwenden möchten, verwenden Sie das Protokoll NSObject superclass Methode : [self superclass] .

Ich weiß nicht, wie ich genau das machen soll, was Sie wollen. Wie wäre es mit einem Debugger-Hook? Setzen Sie dies in Ihre Klasse:

%Vor%

und dann können Sie [self callSupersDoSomething] vom Debugger aufrufen.

    
Josh Caswell 30.05.2011 00:24
quelle

Tags und Links