1

나는 세 가지보기 컨트롤러 내가 내 지정된 컨트롤러에 직접 나에게 걸리는 문는 popToViewController 및 메모리 관리

[self.navigationController popToViewController:(Main_View*) mainViewObj animated:YES];

를 사용하는 세 번째에있는 navigationController 밀어가 먼저 말한다. 모든 뷰 컨트롤러에서 viewWillDisappear 메서드의 NSMutableDictionary에서 개체를 제거하기 위해 코딩을했는데 중단 점을 사용하여 디버깅을 시도했지만 절대로 viewWillDisappear에 도달하면 Main_View으로 직접 이동합니다. 사전에서 개체를 제거하거나 해제하는 것에 대해 걱정해야합니까?

+0

쓰기 - (void) viewDidDisappear : (BOOL) animated –

+0

시도했지만 마지막 뷰 컨트롤러의 viewDidDisappear가 호출되고 있습니다. – Hassy

+0

너의 NSMutableDictionary가 자동으로보기를 터뜨릴 때 Dude는 풀릴 것이다. –

답변

2

viewWillDisappear: 메서드는 뷰 컨트롤러를 맨 위에 밀어 넣었을 때 이미 사라져 있기 때문에 다른 뷰 컨트롤러에는 호출되지 않습니다. 그래서 기본적으로 viewWillDisappear:은 이전 시점에 이미 호출되었습니다. 그들이 처음에는 보이지 않았기 때문에 그것을 다시 부르는 것이 이치에 맞지 않습니다.

+0

그래,하지만 난 단지 당신이 때, 내 작업을 할 수 있도록하지 않습니다 pushviewcontroller 때 viewwilldisappear 메서드를 호출하면 얻을 수표 (if 문) , 그 때 가장 적합한 방법은 무엇입니까? – Hassy

+0

실제로 무엇을하려고 하느냐에 달려 있습니다 ... 당신의 질문에 왜 분명하지 않은가? 왜 왜 * 뷰 콘트롤러가 팝되었을 때 사전에서 어떤 객체들을 제거해야만합니다. 나중에이 뷰 컨트롤러를 재사용 하시겠습니까? 그렇지 않다면 대신'dealloc'에서 "정리"작업을 수행하는 것이 좋습니다. 그렇지 않으면'UINavigationController'를 하위 클래스로 만들 것을 고려할 수 있습니다. – omz

0

AppDelegate의 NSMutableDictanories에 대한 약한 참조를 유지 한 다음 mainViewController의 poptoviewcontroller를 가져 와서 nil인지 아닌지 확인하십시오. 그렇지 않은 경우 기본의 사전에서 개체를 제거 할 수 있습니다 그 참조와 함께 볼 수 있습니다.

+0

가능한 솔루션 감사 하나 – Hassy