我有一个Mvvmcross应用程序,它在root中有一个TableViewController。每行打开一个DetailViewController。在每一个内部,您都可以在EditViewController中编辑它。
所以我为每个视图都有一个ViewModel。我在这里处理两个问题:
1)在DetailViewController中,我订阅了一个数据库消息。当我关闭它时,我必须处理这个subscribeToken。所以当DetailViewController被破坏时我需要调用它。但是当它消失时无法调用它,因为当我打开editViewController时它会发送一条消息,DetailViewController必须听。
所以我无法在ViewDidDisappear方法中处理它。但另一种选择是在ViewDidUnload中。但是这种方法只在MemoryWarnings中调用。所以它没有处理令牌。那不好。
2)另一个问题是:对于我打开的每个DetailsViewcontroller,我必须在Settings中保存当前id是什么。然后当我离开时,我必须从“设置”中删除它。所以同样的问题在这里。如果我在ViewDidDisappear中删除它,它将删除当我在EditViewController,我不能,它必须在那里设置。但是,如果我仅在ViewDidUnload中删除它,则不会被调用,并且必须删除此变量。
我应该何时将OnDestroy方法调用到两种情况?
在Android中我正在调用OnDestroy。我应该在iOS中将它称为何处?
谢谢你,
答案 0 :(得分:4)
ViewDidUnload
不是一个选项 - 它已被弃用,不会被调用(很久以前 - 例如可能是iOS5以后?)。
当ViewController“不再使用”时,iOS并没有提供一般的ViewController覆盖。但是,如果您可以控制应用中的ViewControllers,例如如果你使用的是一个从不在popped
之后重复使用ViewControllers的NavigationController,那么提供你自己的“清理”方法并从你自己的导航控制逻辑中调用它应该是相对简单的 - 例如来自使用NavigationController生成的事件的自定义演示者。