iOS 6 中的 viewDidLoad 调用一次?

Posted

技术标签:

【中文标题】iOS 6 中的 viewDidLoad 调用一次?【英文标题】:viewDidLoad in iOS 6 called once? 【发布时间】:2012-10-31 06:20:18 【问题描述】:

注意:这个问题与最近的deprecation of viewDidUnload有关。我在这个话题上见过"great" and logical answers,但显然they were proven wrong。谨慎行事,如您所见,这个主题非常混乱。

From Apple's Docs:

但是系统会自动释放这些昂贵的资源 当视图未附加到窗口时。剩余的记忆 大多数视图使用的足够小,不值得 系统自动清除并重新创建视图层次结构。

所以...我可以安全地假设在 ios 6 中,只要我没有明确地将 viewController 的视图设置为 nil(手动卸载它),viewDidLoad 只会为任何分配的 viewController 实例调用一次在应用程序的整个生命周期中?

【问题讨论】:

我发现在 iOS 6 中,当我将 ViewController 的方向设置为横向时,会调用两次 viewDidLoad。 @DJean 我相信您的答案比当前接受的答案更准确。 @DJean 你如何将UIViewControllers 方向“设置”为横向?以编程方式?当我通过手动或programmatically 旋转设备来执行此操作时,不会再次调用viewDidLoad 【参考方案1】:

从 iOS 6 开始,您的 UIViewController 子类只会收到一次 viewDidLoad,除非您编写代码将其 view 设置回 nil

但是,我不会在像UIImagePickerController 这样的复杂系统提供的视图控制器中依赖这种行为。也许它将自己的view 设置回零。

【讨论】:

以上是关于iOS 6 中的 viewDidLoad 调用一次?的主要内容,如果未能解决你的问题,请参考以下文章

viewDidLoad 被调用两次

UIImagePickerViewController 相机重载标签栏控制器(调用viewDidLoad)

强制 viewDidLoad 在 iOS 上触发

如何使 SwrevealViewController 的 viewDidLoad 只调用一次

iOS:如何知道 viewDidLoad 是不是被调用?

ViewDidLoad 在导航时只调用一次