문제

어쨌든 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top