iPhone - viewDidUnload / viewDidLoad调用不一致

时间:2011-01-15 12:15:48

标签: iphone uiviewcontroller behavior viewdidload

我今天正在对我的iPhone应用程序进行一些测试和调试,并遇到了一些奇怪的行为。

在我的MainView我有两个模态视图,当使用presentModalViewController显示其中一个视图时,我注意到我viewDidUnload的{​​{1}}方法被调用了在展示另一个时发生。关闭子视图时,MainView方法(viewDidLoad)的情况也是如此。

我检查了打开和关闭子视图的两种方法,我发现的唯一区别在于MainView。在激活modalTransitionStyle / viewDidUnload的情况下,我使用的是viewDidLoad,而另一个UIModalTransitionStyleFlipHorizontal。然后我开始通过交换两种样式并使用其他过渡样式进行实验,我发现这确实是导致不同行为的原因。事实上,当使用UIModalTransitionStyleCrossDissolve时,“父”视图控制器的UIModalTransitionStyleFlipHorizontal / viewDidUnload方法总是被调用,而其他任何过渡样式都不会发生。

我的问题是现在它应该表现得像这样,如果不是哪种行为是正确的。在显示和关闭模态视图时是否应该调用unload和load方法。

此外,有人可以确认或否认这种行为吗?

感谢名单

PS。每次调用两个被调用的视图控制器的viewDidLoad方法。只是为了澄清:)

1 个答案:

答案 0 :(得分:0)

  

在显示和关闭模态视图时是否应该调用unload和load方法。

行为应取决于当前的内存情况。如果内存不足,系统将向所有视图控制器发送内存警告。视图当前不在屏幕上的视图控制器将通过卸载其视图来对内存警告作出反应(当显示屏再次出现时,将导致重新加载视图)。

因此,根据设备的内存情况和正在显示的模态视图控制器的内存要求,卸载/加载行为应该有所不同。它不应该依赖于modalTransitionStyle IMO。