학습을 돕기 위해 NSLOG에 유지 카운트를 보낼 수 있습니까?
문제
어쨌든 NSLOG를 사용하여 카운트를 유지하는 개체를 표시 해야하는지 궁금합니다. 간단한 코드로 유지/릴리스가 어떻게 작동하는지 배우기 위해 콘솔에 인쇄하고 싶습니다.
건배 -기세 -
해결책
가능할뿐만 아니라 매우 쉽습니다.
NSLog(@"retain count=%d",[obj retainCount]);
다른 팁
유지 및 릴리스 메시지가 문자열 상수로 전송 될 수있는 NSString의 문제를 겪을 수도 있지만 실제로는 객체를 유지하거나 변경하지 않습니다. 아래 코드는 작동하고 NSString을 사용하도록 변경하고 유지 / 릴리스에는 영향을 미치지 않습니다.
암호:
#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;
}
산출:
Running…
TESTBED[12306:a0f] RC: 1
TESTBED[12306:a0f] RC: 2
TESTBED[12306:a0f] RC: 1
게리
디버거 콘솔에서는 다음을 입력 할 수 있습니다 : print (unsigned int) [retaincount
제휴하지 않습니다 StackOverflow