Ios 为什么不是';当UIViewController';用户的视图是否可见?

Ios 为什么不是';当UIViewController';用户的视图是否可见?,ios,uikit,viewcontroller,memory-warning,Ios,Uikit,Viewcontroller,Memory Warning,我正在读一本关于iOS编程的书。假设我们有两个ViewController(每个都有自己的视图),在任何时候,我只能看到其中一个的视图。当应用程序运行时,我通过模拟器发送了一个“内存警告”。根据这本书,当我“强制”隐藏的viewcontroller显示时,我应该观察到它的viewDidLoad再次被触发。但我没看到它发生 换句话说,“内存警告”应该会破坏不在屏幕上的视图。但我看不见 这本书是为iOS5编写的。我想知道iOS6中是否有一些行为改变+ 谢谢viewDidLoad在创建UIViewCo

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

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

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


谢谢

viewDidLoad
在创建UIViewController的视图时对应<代码>视图将出现:和
视图显示:
是UIViewController视图可见时涉及的关键方法。

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


可能是您正在使用导航控制器或选项卡栏视图控制器打开视图控制器-两者都不会解除分配视图控制器,因此不会调用viewDidLoad。

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

问题很清楚:

在iOS 6.0中已弃用。在内存不足的情况下不再清除视图,因此永远不会调用此方法


第一次使用其视图时将调用它。第一次加载时

因此,当有人调用时:
viewController.view
viewController.isViewLoaded
NO
则加载视图并调用
viewDidLoad


该视图从未卸载(从iOS 6开始)。

谢谢。我只是编辑我的问题,使它更清楚。我只是想知道为什么“内存警告”不会导致视图被破坏内存警告不会破坏具有强引用的对象(也称为保留对象)。它执行您必须实现的方法以释放内存。如果您没有释放足够的内存,您的应用程序最终可能会被终止。第一次使用它的视图时调用它=这不是它的初始化第一次使用它的视图时调用它=这不是它的初始化