segues:调用续集的控制器实例会发生什么?

时间:2012-04-16 23:49:09

标签: ios storyboard segue uistoryboard

我一开始并不太相信segues(因为如果没有正确设置崩溃,因为我不清楚幕后发生了什么)但我发现我更多地使用了它们。我仍然没有完全“了解”正在发生的事情。

我在ViewController A和ViewController B之间有一个segue,没有涉及UINavigationController。它执行FlipHorizo​​ntal过渡,我喜欢。

当A启动segue时,A实例会发生什么?我在A的viewDidUnload方法中放了一个日志语句,但它没有被调用。 A还在潜伏吗?我希望能够完全回到A的同一个实例,但是我还没有弄清楚如何做到这一点。

作为测试,我在导航控制器中嵌入了A并尝试了一个segue和一个推送到B - 并且无法回到我的A实例。我在这里搞砸了什么?

1 个答案:

答案 0 :(得分:0)

记住视图和控制器之间的区别。呼叫控制器仍然存在,它的视图也是如此。但是,系统可以卸载屏幕上没有的任何VIEW。这就是调用viewDidUnload的时候。

基本上,控制器和其他所有对象一样,直到所有对它的引用都消失为止。此外,控制器拥有的任何东西仍然存在。然而,虽然它仍然存在,它可以得到两条重要的信息,告诉它“摆脱你不需要或可以重建的任何东西。”

其中一个是viewDidUnload。另一个是didReceiveMemoryWarning。

所以,是的,如果你的NavController深层有100个视图控制器,那么所有100个视图控制器仍然存在......虽然他们的一些视图可能不是。