Frage

Einfach nur neugierig, wenn es ohnehin ein Objekt behalten count NSLog anzuzeigen. Ich möchte nur, um sie drucken zu trösten lernen zu helfen, wie behalten / Release wird in einigen einfachen Code zu arbeiten?

prost -gary -

War es hilfreich?

Lösung

Es ist nicht nur möglich, es ist sehr einfach zu:

NSLog(@"retain count=%d",[obj retainCount]);

Andere Tipps

Ich glaube, Sie könnten ein Problem mit NSString schlagen werden, wo halten und loslassen Nachrichten an einem String-Konstante gesendet werden können, aber sie haben tatsächlich keine Wirkung noch die Objekte retainCount verändern. Der folgende Code funktioniert, ist es NSString zu verwenden, ändern und behalten / Release hat keine Wirkung.

Code:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSMutableString *myString = [[NSMutableString alloc] initWithString:@"AB"];
    NSLog(@"RC: %d", [myString retainCount]);
    [myString retain];
    NSLog(@"RC: %d", [myString retainCount]);

    [myString release];
    NSLog(@"RC: %d", [myString retainCount]);
    [myString release];

    [pool drain];
    return 0;
}

Ausgabe:

Running…
TESTBED[12306:a0f] RC: 1
TESTBED[12306:a0f] RC: 2
TESTBED[12306:a0f] RC: 1

Gary

In der Debugger-Konsole können Sie eingeben: print (unsigned int) [Sache retainCount]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top