你可以检测到一个UIViewController被解散或popup?

我有一些清理,需要在一个共享资源执行任何时候我的视图控制器之一被解散/popup/卸载? 这可以是用户点击单个屏幕上的后退button,或者调用popToRootViewController(在这种情况下,理想情况下,我可以清除每个popup的控制器)。

显然的select是在viewDidUnload中做到这一点,但当然,这不是如何卸载工程。 有没有办法将所有的情况都捕获到ViewController从堆栈中删除?

编辑:忘了提及,我正在使用Xamarin这样做,可能会或可能不会影响的答案。

 override func viewDidDisappear(animated: Bool) { if (self.isBeingDismissed() || self.isMovingFromParentViewController()) { // clean up code here } } 

-dealloc可能是你最好的select。 视图控制器将从堆栈popup,除非您保留在其他地方。

viewWillDisappear:viewDidDisappear:不是很好的select,因为任何时候视图控制器都不会被显示出来,包括当它在堆栈上推其他东西时(所以它变成了第二个)。

viewDidUnload不再使用。 系统框架从iOS 6停止调用此方法。

 -(void) viewDidDisappear:(BOOL)animated{ }