繁体   English   中英

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

[英]Why isn't viewDidLoad executed when a UIViewController's view becomes visible?

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

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

这本书是为iOS5编写的。 我想知道iOS6 +中是否存在某些行为更改

谢谢

是的,行为在IOS 6.改变开始在IOS 6中,当系统发送一个低存储器警告一个UIViewController 卸载其视图。

viewDidUnload文档非常清楚:

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

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

所以当有人调用时: viewController.viewviewController.isViewLoadedNO然后加载视图并调用viewDidLoad

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM