2011-09-22 6 views
0

Tabbar 탐색 인터페이스가있는 간단한 앱이 있습니다. 세 가지보기 (A, B 및 C)와 모달보기가 있습니다. 각 뷰에는 자체 뷰 컨트롤러와 펜촉이 있습니다. 인터페이스 빌더에서 모두 설계되고 연결됩니다.보기가 탭바 컨트롤러에서 보이지 않을 때 해제하는 방법?

표시되지 않는보기를 해제하고 싶습니다. 다른보기가 나타날 때 릴리스하고 전무를 시도 같은

[[[self.navigationController.viewControllers objectAtIndex:0] view] release];  
[[self.navigationController.viewControllers objectAtIndex:0] view] = nil; 

등 등

그것은 문제가 발생하지 않습니다하지만 난 악기를 실행할 때 어떤 차이를하지 않습니다. 나는 메모리 사용량의 감소는 발표의 ViewController가 보유 내용에 따라 중요하지 않을 수도 있습니다

답변

0

@Daryl Teo는 viewWillDis/Appear으로 출시하고 다시 작성해야한다고 썼습니다. (이 답변을 쓰는 ​​이유는) didReceiveMemoryWarning이라는 메서드가 있으므로 사용하십시오!
Simulator에서 메모리 경고 테스트 기능을 사용하여 호출 될 때마다 로그 아웃하고 테스트 할 수 있습니다.
탭을 열고 다른 탭을 연 다음 해당 테스트 함수를 호출하십시오. 디버그 콘솔이 로그를 출력해야합니다. 그렇지 않은 경우 누군가가 과도하게 보류 된 적이 있는지 여부를 다시 확인해야합니다 (다시 viewWillDisappear으로 릴리스되어야 함).

0

당신의 도움을 주셔서 감사합니다 것입니다 메모리 사용

의 모든 방울을 볼 수 없습니다. 나는 당신에게 NSLog를 viewController의 'dealloc'에 sugest 시켜서 정말 할당이 해제되었는지 또는 여전히 다른 객체가 남아 있는지 확인합니다. release가 메모리를 해제하지 않는다는 것을 기억하십시오. 객체 수가 0에 도달하면 (dealloc을 호출하여) 그렇게 할 것입니다.

0

당신은 이것을 원하지 않습니다. TabBarController가 뷰 컨트롤러를 처리하도록합니다. (이미 내부적으로 viewController를 유지하므로 보유 개수가 동기화되지 않게됩니다.)

viewWillDisappear에서 객체를 해제하면 메모리를 더 효율적으로 사용할 수 있습니다. 그런 다음 viewWillAppear에서 다시 데이터를 다시 작성하십시오.

+0

그랬지만 메모리 사용량이 떨어지지 않았습니다. 그것은 다른보기를 선택할 때 올라간다. 그러나 나는 그들을 놓을 때 떨어지지 않는다. 나는 [self.view release]하고 self.view = nil 않았다. 그것은 멋지게 내 견해를 재현했지만 그게 전부입니다. – Tibidabo

관련 문제