Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone-viewDidUnload/viewDidLoad调用不一致_Iphone_Uiviewcontroller_Behavior_Viewdidload - Fatal编程技术网

iPhone-viewDidUnload/viewDidLoad调用不一致

iPhone-viewDidUnload/viewDidLoad调用不一致,iphone,uiviewcontroller,behavior,viewdidload,Iphone,Uiviewcontroller,Behavior,Viewdidload,今天我正在对我的Iphone应用程序进行测试和调试,遇到了一些奇怪的行为 在我的MainView中,我有两个模式视图,当使用presentModalViewController显示其中一个视图时,我注意到调用了我的MainView的viewDidUnload方法,而在显示另一个视图时,该方法没有发生。关闭子视图时,viewdiload方法(属于MainView)的情况也是如此 我检查了打开和关闭子视图的两种方法,发现唯一的区别在于modaltransationstyle。在一个确实激活了view

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

在我的
MainView
中,我有两个模式视图,当使用
presentModalViewController
显示其中一个视图时,我注意到调用了我的
MainView
viewDidUnload
方法,而在显示另一个视图时,该方法没有发生。关闭子视图时,
viewdiload
方法(属于
MainView
)的情况也是如此

我检查了打开和关闭子视图的两种方法,发现唯一的区别在于
modaltransationstyle
。在一个确实激活了
viewDidUnload
/
viewDidLoad
的程序中,我使用了
uimodaltransationstylefliphorizontal
,而在另一个
uimodaltransationstylecrossdisle
。然后,我开始尝试交换这两种风格,并使用其他过渡风格,我发现这确实是导致不同行为的原因。事实上,在使用
UIModAltransationStyleFlipHorizontal
时,始终会调用“父”视图控制器的
viewDidUnload
方法,而其他任何转换样式都不会调用该方法

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

另外,其他人是否可以确认或否认这种行为

塔克斯

另外,两个被调用的视图控制器的
viewDidLoad
方法每次都会被调用。我只是想澄清一下:)

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

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


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

这在iOS模拟器或设备中发生吗?您正在使用哪个SDK?请告诉我们您正在使用哪个版本的SDK。如果您显示用于检查是否调用了viewDiDLoad和viewDidUnload的实际代码,这也会有所帮助。@phix23:这发生在运行iOS 4.2.1的iPhone 4(设备)上。我正在使用SDK 4.2。@Alex:SDK版本4.2。我实际上并没有使用代码来测试这一点。在这两种方法中有一个断点,“它不应该依赖于modaltransation风格”——我完全同意。然而,至少在我的情况下,似乎是这样。我真的做了理论上的测试。我仍然希望其他人以前也遇到过这种情况。