1

起初我不太相信 segues(因为如果设置不正确会导致崩溃,而且我不清楚引擎盖下发生了什么),但我发现我更多地使用它们。我仍然不完全“了解”正在发生的事情。

我在 ViewController A 和 ViewController B 之间有一个不涉及 UINavigationController 的 segue。它做了一个 FlipHorizo​​ntal 过渡,我喜欢。

当 A 启动 segue 时,A 实例会发生什么?我在 A 的方法中放了一条日志语句,viewDidUnload它没有被调用。那么A还潜伏着吗?我希望能够继续回到 A 的同一个实例,并且它的所有变量都完好无损,但我无法弄清楚如何做到这一点。

作为测试,我将 A 嵌入到导航控制器中,并尝试了对 B 的转场和推送——但无法回到我的 A 实例。我在这里搞砸了什么?

4

1 回答 1

0

记住视图和控制器之间的区别。调用控制器仍然存在,它的视图也是如此。但是,任何不在屏幕上的 VIEW 都可以被系统卸载。那是 viewDidUnload 将被调用的时候。

基本上,一个控制器,就像所有其他对象一样,一直存在,直到所有对它的引用都消失了。此外,控制器拥有的任何东西也仍然存在。然而,当它还活着的时候,它会收到两条重要的信息,告诉它“摆脱任何你不需要或可以重建的东西”。

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

所以,是的,如果你在 NavController 深处有一个堆栈 100 个视图控制器,那么所有 100 个视图控制器仍然存在……尽管它们的某些视图可能不是。

于 2012-04-17T01:18:14.280 回答