ViewController 的 loadView,、viewDidLoad,、viewDidUnload 分别是在什么时候调用的?
参考答案:
在 iOS 的 UIViewController 的生命周期中,loadView
、viewDidLoad
和 viewDidUnload
这三个方法扮演着重要的角色。然而,需要注意的是,从 iOS 6 开始,viewDidUnload
方法已经被废弃,并且从 iOS 9 开始,它已经完全被移除了。因此,对于现代的 iOS 开发,我们主要关注 loadView
和 viewDidLoad
。
以下是这三个方法(尽管 viewDidUnload
已被废弃)的调用时机及其描述:
-
loadView
- 调用时机:当 view controller 的
view
属性第一次被访问,并且此时view
属性为nil
时,系统会自动调用这个方法。 - 描述:这个方法的主要任务是加载或创建 view controller 的视图。如果你使用 Interface Builder 来创建视图,那么通常不需要重写这个方法,因为系统会自动加载与 view controller 关联的 XIB 文件。但是,如果你选择手动创建视图,你可以在这个方法中编写代码来创建和配置你的视图。
- 调用时机:当 view controller 的
-
viewDidLoad
- 调用时机:在
loadView
方法执行完毕后,并且视图层次结构已经被完全加载到内存中时,viewDidLoad
会被调用。 - 描述:这个方法通常用于执行初始化视图的额外设置,比如添加子视图、配置约束、绑定数据等。这是进行视图自定义和配置的理想位置。
- 调用时机:在
-
viewDidUnload(已废弃)
- 调用时机:在 iOS 6 及之前的版本中,当内存警告发生时,系统可能会卸载不再需要的视图来释放内存,此时会调用
viewDidUnload
方法。 - 描述:这个方法通常用于释放与视图相关的强引用,以便视图可以被正确地卸载和释放。然而,由于这个方法的废弃和移除,现代的 iOS 开发中不再需要处理这个方法。相反,开发者应该使用自动引用计数(ARC)来管理内存,并在
didReceiveMemoryWarning
方法中释放非必需的资源。
- 调用时机:在 iOS 6 及之前的版本中,当内存警告发生时,系统可能会卸载不再需要的视图来释放内存,此时会调用
总结来说,loadView
和 viewDidLoad
是 iOS 视图控制器生命周期中非常重要的两个方法,用于加载和初始化视图。而 viewDidUnload
由于已被废弃和移除,不再需要关注。