当UIViewController的视图变得可见时,为什么不执行viewDidLoad?

时间:2013-09-21 03:07:31

标签: ios uikit viewcontroller memory-warning

我正在读一本关于iOS编程的书。假设我们有两个viewcontrollers(每个都有自己的视图),在任何时候,我只能看到其中一个的视图。当APP运行时,我通过模拟器发送了“内存警告”。根据这本书,我应该观察隐藏的viewcontroller的viewDidLoad再次被触发,当我“强制”隐藏的一个出现。但我没有看到它发生。

换句话说,“内存警告”应该破坏不在屏幕上的视图。但我看不到它。

这本书是为iOS5编写的。我想知道iOS6 +中是否有一些行为改变

由于

4 个答案:

答案 0 :(得分:1)

是的,iOS 6中的行为已更改。从iOS 6开始,当系统发送内存不足警告时,UIViewController会卸载其视图。

viewDidUnload documentation非常明确:

  

在iOS 6.0中已弃用。在低内存条件下不再清除视图,因此永远不会调用此方法。

答案 1 :(得分:1)

第一次使用VIEW时调用它。第一次加载。

当有人致电:viewController.viewviewController.isViewLoadedNO时,视图就会加载并调用viewDidLoad

视图永远不会被卸载(因为iOS 6)。

答案 2 :(得分:0)

viewDidLoad对应于创建UIViewController视图的时间。当UIViewController的视图变得可见时,viewWillAppear:viewDidAppear:是所涉及的关键方法。

答案 3 :(得分:0)

只有在初始化viewController时才会调用viewDidLoad。

可能是您正在使用导航控制器或标签栏视图控制器来调出视图控制器 - 它们都不会取消分配您的视图控制器,因此不会调用viewDidLoad。