본문 바로가기
기술/iOS

[NSString alloc] initWithXXXX 시에 retainCount 가 2147483647 나오는 이유.

by 프리지크 2012. 2. 7.
반응형
    NSString *tt2 = [[NSString alloc] initWithString:@"tt2"];
    NSLog(@"tt2 retain count : %d", [tt2 retainCount]);
    [tt2 release];
    NSLog(@"tt2 retain count : %d", [tt2 retainCount]);

코딩 질을 하길 위 처럼 하면 예상되는 로그는
1
0
일겁니다. 그런데, 경악스럽게도
2147483647
2147483647
가 나옵니다.


그 이유가 개발자 문서 retainCount 메소드 부분에 나와있네요.

NSObject - retainCount

 For objects that never get released (that is, their release method does nothing), this method should return UINT_MAX, as defined in <limits.h>.

즉, 해제되지 말아야할 객체는 UINT_MAX를 리턴해준다는 군요.

@"tt2" 형태의 상수형 스트링을 넣게 되면  상수메모리에 잡히게 됨으로 release를 할 수 없게 된다는군요. 의외입니다.  여튼, 그래서 UINIT_MAX가 리턴된다는것!
반응형