Können Sie zählt zu NSLog senden behalten Lernen zu unterstützen?
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 -
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]