1

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

在我的MainView我有两个模态视图,当使用其中一个显示其中一个时,presentModalViewController我注意到我的viewDidUnload方法MainView被调用,而在显示另一个时它没有发生。在关闭子视图时,viewDidLoad方法 (of ) 也是如此。MainView

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

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

另外,其他人可以确认或不确认这种行为吗?

谢谢

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

4

1 回答 1

0

在显示和关闭模式视图时是否应该调用卸载和加载方法。

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

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

于 2011-01-15T13:08:12.453 回答