2009-09-09 7 views
12

In der Dealloc-Methode für eine Klasse, wie würde ich die ID (oder einen anderen eindeutigen Bezeichner) für die Instanz ausgeteilt werden?Instanz-ID zu NSLog drucken?

- (void)dealloc { 
    NSLog(@"_deallocing: ??"); 
    [super dealloc]; 
} 

Ist das möglich? Ich versuche nur ein wenig mehr Feedback in der Konsole als Lernhilfe zu bekommen.

vielen Dank -gary-

Antwort

6

Try this:

- (void)dealloc { 
    NSLog(@"_deallocing: %@", self); 
    [super dealloc]; 
} 

Dies wird Ausgang ein bisschen mehr Informationen über das Objekt an die Konsole. Abhängig von der Klasse erhalten Sie entweder eine Speicheradresse und den Klassennamen oder etwas detaillierteres. Wenn Sie möchten, in Ihren eigenen Klassen etwas ausführlichere geben, überschreiben diese Methode und zurück, was auch immer Sie möchten:

-(NSString *)description { 
    return @"Something useful about this object"; 
} 
+0

Ausgezeichnet, also kann ich annehmen, dass "self" einfach auf die Standardbeschreibung der Klasse zugreift? – fuzzygoat

+0

Das stimmt - die Funktion NSLog() ersetzt% @ durch die Beschreibung des gegebenen Objekts. NSObjects -description-Methode bietet den Standardwert Wert. Sehen Sie hier für weitere Informationen über nützliche Dinge mit NSLog: http://www.cocoadev.com/index.pl?NSLog – iKenndac

+0

Was ist, wenn Sie die ID für eine andere Klasse möchten? Z.B. Ich habe eine Mitgliedsvariable 'NSMutableArray' und ich möchte seine Instanz ID drucken. –

52

Wenn Sie speziell die Speicheradresse des Objekts wollen (was ich in Betracht gezogen werden annehmen, könnte ein " identifier“, wenn Sie nicht in Ihrer Klasse implementiert haben), können Sie diese verwenden:

NSLog(@"deallocing %p", self); 

Dies kann ziemlich nützlich sein, wenn Sie mehr als eine Instanz einer bestimmten Klasse haben und versuchen, die zu bestimmen ist wenn es freigegeben wird.

+0

Danke dmkash, das ist ein guter Punkt, sehr geschätzt. – fuzzygoat

+0

Dokumentation über die Zeichenfolgenformatspezifizierer: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html – LopSae