我一开始并不太相信segues(因为如果没有正确设置崩溃,因为我不清楚幕后发生了什么)但我发现我更多地使用了它们。我仍然没有完全“了解”正在发生的事情。
我在ViewController A和ViewController B之间有一个segue,没有涉及UINavigationController。它执行FlipHorizontal过渡,我喜欢。
当A启动segue时,A实例会发生什么?我在A的viewDidUnload
方法中放了一个日志语句,但它没有被调用。 A还在潜伏吗?我希望能够完全回到A的同一个实例,但是我还没有弄清楚如何做到这一点。
作为测试,我在导航控制器中嵌入了A并尝试了一个segue和一个推送到B - 并且无法回到我的A实例。我在这里搞砸了什么?
答案 0 :(得分:0)
记住视图和控制器之间的区别。呼叫控制器仍然存在,它的视图也是如此。但是,系统可以卸载屏幕上没有的任何VIEW。这就是调用viewDidUnload的时候。
基本上,控制器和其他所有对象一样,直到所有对它的引用都消失为止。此外,控制器拥有的任何东西仍然存在。然而,虽然它仍然存在,它可以得到两条重要的信息,告诉它“摆脱你不需要或可以重建的任何东西。”
其中一个是viewDidUnload。另一个是didReceiveMemoryWarning。
所以,是的,如果你的NavController深层有100个视图控制器,那么所有100个视图控制器仍然存在......虽然他们的一些视图可能不是。