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 你如何将UIViewController
s 方向“设置”为横向?以编程方式?当我通过手动或programmatically 旋转设备来执行此操作时,不会再次调用viewDidLoad
。
【参考方案1】:
从 iOS 6 开始,您的 UIViewController
子类只会收到一次 viewDidLoad
,除非您编写代码将其 view
设置回 nil
。
但是,我不会在像UIImagePickerController
这样的复杂系统提供的视图控制器中依赖这种行为。也许它将自己的view
设置回零。
【讨论】:
以上是关于iOS 6 中的 viewDidLoad 调用一次?的主要内容,如果未能解决你的问题,请参考以下文章
UIImagePickerViewController 相机重载标签栏控制器(调用viewDidLoad)