2012-08-25 7 views
1

아무도 도와 드릴까요, 내가 몇 가지 코드가 있는데 retainCount하지만 항상 -1 검사, 적어도 1이어야합니까?retainCount는 항상 -1입니까?

여기 내 코드는 무엇입니까?

NSNumber* n = [[NSNumber alloc] initWithInt:100]; 

    NSLog(@"Count of n : %i",[n retainCount]); 

    NSNumber* n1 = n; 

    NSLog(@"Count of n : %i",[n retainCount]); 
    NSLog(@"Count of n1: %i",[n1 retainCount]); 
    NSLog(@"Address of n : %p", n); 
    NSLog(@"Address of n1: %p", n1); 

내가 그것을 실제로 UINT을 반환 말하 %에게 내가 관한됩니다 얻을, 그래서 난에는 U %로 %에게 내가 대체 지금 내가 retainCount에 대해 정말로 긴 그림을 얻을 다른 이상한 것은 - 4294967295

조금 혼란 스럽습니까? 사전

+13

'retainCount'사용에 대한 유용한 정보는 http://whentouseretaincount.com을 참조하십시오. 아래로 스크롤하는 것을 잊지 마세요 :) – mttrb

+0

감사합니다. 훌륭한 정보 – Martin

답변

11

-retainCount의 결과는 당신의 추상화 수준에서 가치이며, 이것은 또 다른 이유이다에서

감사합니다.

... 질문에 대한 답변 : NSUIntegerMax은 불후의 개체를 나타냅니다.

당신은 어떤 문서에이에 대한 참조를 찾을 수 있습니다

당신은 당신의 자신의 참조 카운팅 방식을 구현하는 클래스에서이 메소드를 오버라이드 (override) 할 수도 있습니다. 절대로 해제되지 않는 개체의 경우 ( 의 해제 메서드는 아무 것도 수행하지 않음)이 메서드는 <limits.h>에 정의 된대로 UINT_MAX를 반환해야합니다.