3

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

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

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

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

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

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

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

感谢您的问候,

4

1 回答 1

4

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

当 ViewController “不再使用”时,iOS 并没有真正提供通用的 ViewController 覆盖。但是,如果您可以控制应用程序中的 ViewController - 例如,如果您使用的 NavigationController 在使用后从不重用 ViewController popped- 那么提供您自己的“清理”方法并从您自己的导航控制逻辑 - 例如来自使用由 NavigationController 生成的事件的自定义演示者。

于 2015-01-26T09:50:19.233 回答