2012-08-10 5 views
1

UIViewController에는 속성이 아닌 UIBarButtomItem *button 인스턴스 변수가 있습니다. viewDidLoad에서 내가 할 : 나는 같은 클래스에서 나중에 사용하려는 경우 개체를 하위보기에 추가했지만 나중에 사용하려면 개체를 해제해야합니까?

button = [[UIBarButtonItem alloc] init...] 

다음

self.navigationController.leftBarButtonItem = button 

내가 버튼 객체를 해제해야할까요? 나는 배열에 대해 같은 질문을한다. (배열에 객체를 추가하고 나중에 사용한다.) 컬렉션과 UIViews이 모두 추가 된 개체를 보유하므로 혼란 스럽습니다.

답변

1

나중에 액세스하는 방법에 따라 다릅니다. 인스턴스 변수로 액세스하는 경우 대상 컬렉션을 사용하지 않고 인스턴스 변수로 액세스해야합니다. 만약 속성 leftBarButtonItem 방법으로 지정되면 = UIBarButtonItem의 ALLOC] INIT ..] // _button 가정 것은 클래스 인스턴스 변수

버튼 횟수 유지

+0

button.image = ... – Georgi

+0

과 같이 인스턴스 변수를 사용하여 액세스하고 있는데, button이 인스턴스 변수이면 viewDidUnload에서 해제해야합니다. –

+0

oki thanks :) 덕분에 – Georgi

0

_button 1.

있다 - 그 카운트는 2가된다 유지한다.

viewdidunload/dealloc에서 button 객체를 해제하면 leftBarButton이 없어지거나 다시 할당 될 때 _button 수가 0이되어 객체를 올바르게 해제 할 때처럼 잘 작동해야합니다.

_button이 인스턴스 변수가 아닌 경우 _button을 해제해야하며 .leftBarButtonProperty를 사용하여 다시 액세스 할 수 있습니다.

+0

을 도왔습니다. 그래도 viewDidUnload/dealloc에서 버튼을 놓으면 내비게이션 컨트롤러가 메모리에서 제거되었을 때 버튼을 해제할까요? – Georgi

관련 문제