MvvmCross 中的生命周期

Lifecycle in MvvmCross

我有一个 Mvvmcross 应用程序,它在根目录中有一个 TableViewController。每行打开一个 DetailViewController。在其中的每一个内部,您都可以在 EditViewController 中对其进行编辑。

所以每个视图都有一个 ViewModel。我在这里处理两个问题:

1 ) 在 DetailViewController 中,我为其订阅了一条数据库消息。当我关闭它时,我必须处理这个 subscribeToken。所以我需要在 DetailViewController 被销毁时调用它。但是当它消失时不能调用它,因为当我打开 editViewController 时它会发送一条消息让 DetailViewController 必须监听。

所以我不能在 ViewDidDisappear 方法中处理它。但另一个选项是在 ViewDidUnload 中。但是这个方法只在MemoryWarnings中被调用。所以它没有处理令牌。那可不好.

2) 另一个问题是:对于我打开的每个 DetailsViewcontroller,我必须在设置中保存当前 ID。然后当我离开时,我必须将其从“设置”中删除。所以这里有同样的问题。如果我在 ViewDidDisappear 中删除它,当我在 EditViewController 中时它会被删除,但我不能,它必须设置在那里。但是如果我只在 ViewDidUnload 中删除它就不会被调用,并且必须删除这个变量。

我应该在什么时候对这两种情况调用 OnDestroy 方法?

在 Android 我正在调用 OnDestroy。我应该在哪里调用它 iOS?

谢谢你的问候,

ViewDidUnload 不是一个选项 - 它已被弃用并且不会被调用(从很久以前开始 - 例如可能从 iOS5 开始?)。

当 ViewController 为 "no longer used" 时,

iOS 并没有真正提供通用的 ViewController 覆盖。但是,如果您可以控制应用中的 ViewController - 例如如果您使用的 NavigationController 在 popped 之后从不重用 ViewController - 那么提供您自己的 "cleanup" 方法并从您自己的方法调用它应该相对简单导航控制逻辑 - 例如来自使用 NavigationController 生成的事件的自定义演示者。