UITabBarController与模态视图控制器的内存问题

时间:2012-05-08 09:56:31

标签: ios xcode memory-management uitabbarcontroller modalviewcontroller

我的ios应用程序是基于UITabBarController的应用程序。在某些情况下,我需要在另一个模态视图控制器中显示模态视图控制器。

一切都运行良好,期待内存警告到来时:如果我尝试关闭两个模态视图控制器以便返回到我离开标签栏控制器的位置,这就是我所看到的: enter image description here

屏幕上不显示所选标签栏控制器视图。

以下是导致此问题的完整步骤:

  • 用户打开第一个视图控制器(A),该控制器从当前选定的标签栏控制器以模态方式显示。
  • 用户打开另一个视图控制器(B),它从视图控制器A以模态方式显示。
  • 内存警告到来,隐藏的视图被破坏。
  • 用户关闭以模态(动画)方式解散的B.
  • 用户关闭A以模态(动画)方式解散。
  • 不显示所选控制器的视图。

如果从未显示B并且从A发出内存警告,则没有问题。

我还试图从标签栏控制器中显示A,而不是从所选的视图控制器中显示,但没有任何更改。

我已记录了tab-bar和feed控制器(当前所选控制器)的主视图事件入口点。结果令人惊讶:

// B is visible on the screen
2012-05-08 15:30:00.563 - Received memory warning.
2012-05-08 15:30:00.563 - viewDidUnload called on tab-bar controller
2012-05-08 15:30:00.564 - viewDidUnload called on feed controller

// user dismisses B controller and A is displayed
2012-05-08 15:30:30.267 - loadView called on feed controller
2012-05-08 15:30:30.268 - viewDidLoad called on feed controller
2012-05-08 15:30:30.274 - loadView called on tab-bar controller
2012-05-08 15:30:30.274 - viewDidLoad called on tab-bar controller

// user dimisses A controller and tab-bar is displayed
2012-05-08 15:30:40.273 - viewWillAppear: called on tab-bar controller

正如您所看到的,当B被关闭时,标签栏视图(以及Feed也会)恢复。 这不是我期望看到的,实际上在解雇A时应该恢复标签栏视图。

有什么想法吗? 感谢

0 个答案:

没有答案