2012-10-18 3 views
0

다음과 같은 자동 응답 기능을 사용할 수 있습니까?할당 된 막대 버튼 항목을 해제하는 방법

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease]; 

내가 얻은 분석기 경고가 작동하고 제거됩니다. 그렇지 않다면 어떻게 제대로 풀어 놓을까요? (올바른 방법으로 지금 ARC를 사용하는 것입니다 있지만) 올바른 방법입니다 도움

답변

1

이 올바른 것입니다.

leftBarButtonItem은 UIBarButtonItem을 유지하는 속성이므로 올바른 방법입니다.

autorelease 메시지가 없으면 메모리 누수가 발생합니다.

1

에 대한

감사합니다. ALLOC 의해 리턴 된 객체/INIT가 유지 수가 균형을 위해 해제 될 갖도록

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
self.navigationItem.leftBarButtonItem = barButton; 
[barButton release]; 

navigationItem의 세터 버튼 자체를 유지 :

이다 (비 ARC 환경에서) 대안 허용 설명 된 방법 중 하나 (alloc/init는 retaincount 1로 객체를 반환하고 setter는 +1을 추가 함).

권장하지 확실히 :

[self.navigationItem.leftBarButtonItem release]; 
1

이 올바른지, 또한 당신이

UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:backButton]; 
self.navigationItem.leftBarButtonItem = item; 
[item release]; 
을 수행 할 수 있습니다
관련 문제