2015-01-23 4 views
3

루트에 TableViewController가있는 Mvvmcross 앱이 있습니다. 각 행은 DetailViewController를 엽니 다. 그리고 각각의 내부에서 EditViewController로 편집 할 수 있습니다.MvvmCross의 라이프 사이클

그래서 각보기에 ViewModel이 있습니다. 여기서 두 가지 문제를 다루고 있습니다 :

1) DetailViewController에서 나는 그것을 데이터베이스 메시지에 등록합니다. 내가 닫을 때, 나는이 subscribeToken을 처분해야한다. 그래서 DetailViewController가 파손되었을 때 이것을 호출해야합니다. 그러나 그것이 사라지면 위와 같이 호출하지 마십시오. 왜냐하면 editViewController를 열면 DetailViewController가 청취해야한다는 메시지를 보내기 때문입니다.

그래서 ViewDidDisappear 메서드에서 처리 할 수 ​​없습니다. 그러나 다른 옵션은 ViewDidUnload에 있습니다. 그러나이 메서드는 MemoryWarnings에서만 호출됩니다. 그래서 토큰을 처분하지 않습니다. 그건 좋지 않다 .

2) 다른 문제는 내가 열어 본 각 DetailsViewcontroller에 대해 설정에 현재 ID가 무엇인지 저장해야한다는 것입니다. 그런 다음 내가 떠날 때 설정에서 제거해야합니다. 그래서 여기에 같은 문제가 있습니다. ViewDidDisappear에서 제거하면 EditViewController에있을 때 제거되며, 설정하지 않아도됩니다. 그러나 ViewDidUnload에서만 제거하면 호출되지 않으며이 변수는 제거해야합니다.

언제 두 경우 모두 OnDestroy 메서드를 호출해야합니까?

Android에서 나는 OnDestroy를 호출합니다. iOS에서 어디에서 호출해야합니까? 안부

감사합니다,

답변

4

ViewDidUnload이 옵션을 선택하지 않습니다 - 그것은 사용되지이고 호출되지 않습니다 (오래 전부터? - 예를 들어, 어쩌면 iOS5를하기 때문에).

iOS는 ViewController가 "더 이상 사용되지 않음"일 때 일반 ViewController 오버라이드를 실제로 제공하지 않습니다. 그러나 앱에서 ViewController를 제어 할 수 있다면 (예 : 사용자가 popped 일 때 ViewControllers를 결코 다시 사용하지 않는 NavigationController를 사용하는 경우 자신의 "정리"메소드를 제공하고 자신의 네비게이션 컨트롤 로직에서 호출하는 것이 상대적으로 간단해야합니다. NavigationController에 의해 생성 된 이벤트를 사용하여 사용자 정의 표현 자에서.