【发布时间】:2014-10-27 18:38:42
【问题描述】:
每当我的视图控制器之一被解除/弹出/卸载时,我需要在共享资源中执行一些清理工作?这可能是当用户点击单个屏幕上的后退按钮时,也可能是调用了 popToRootViewController(在这种情况下,我最好能够清除每个弹出的控制器。)
显而易见的选择是在 viewDidUnload 中执行此操作,但当然,卸载不是这样工作的。有没有办法捕捉到 ViewController 从堆栈中移除的所有情况?
编辑:忘记提及我正在使用 Xamarin 执行此操作,因此可能会或可能不会影响答案。
【问题讨论】:
-
此共享资源在何处/何时创建?需要进行什么样的清理工作?是否需要在应用程序中的任何视图控制器被解除或仅在特定视图控制器类的实例被解除时才执行此操作?
-
@rmaddy:资源在加载时添加到 viewController。清理是资源内部方法的一部分,该方法执行多项我不清楚的事情,但应该调用它。需要调用它来解除每个单独的控制器。如果我回击一个屏幕,该屏幕将需要在其对资源的引用上调用该方法。如果我有 4 个屏幕深并调用 popToRootViewController,则弹出的 3 个屏幕将每个都需要调用该方法。
-
那么
dealloc,正如@SteveMadsen 所说,可能是最好的地方。 -
是的,看起来 dealloc 是 Objective-C 的正确答案。遗憾的是,我认为它不适用于 Xamarin,因此我仍在寻找解决方案。
标签: ios xamarin.ios xamarin