ViewController 的 loadView,、viewDidLoad,、viewDidUnload 分别是在什么时候调用的?
参考答案:
UIViewController
的 loadView
、viewDidLoad
和 viewDidUnload
方法在 iOS 应用的生命周期中扮演着重要的角色,它们分别在特定的时刻被调用。以下是关于这三个方法调用时机的详细解释:
-
loadView
- 调用时机:当
view
属性首次被访问,并且该属性当前为nil
时,loadView
方法会被调用。 - 主要作用:为控制器加载或创建视图。默认情况下,如果你没有重写
loadView
方法,系统会尝试从 nib 文件中加载视图(如果与控制器关联的 nib 文件存在)。如果你重写了loadView
方法,你应该在其中创建或加载你的视图,并将其赋值给self.view
。
- 调用时机:当
-
viewDidLoad
- 调用时机:在
loadView
方法执行完成后,并且视图层次结构已经准备好时,viewDidLoad
方法会被调用。这通常意味着视图已经被加载到了内存中,但还没有被显示到屏幕上。 - 主要作用:用于执行一些初始化操作,比如添加子视图、设置初始状态、绑定数据等。这个方法是进行视图控制器初始化配置的好地方。
- 调用时机:在
-
viewDidUnload
- 调用时机:在 iOS 6 之前的版本中,当视图的内存被系统释放时(例如,由于内存警告),
viewDidUnload
方法会被调用。但在 iOS 6 及以后的版本中,这个方法已经被废弃,因为UIViewController
不再自动卸载视图。因此,对于现代 iOS 开发,通常不需要关心viewDidUnload
。 - 主要作用(在 iOS 6 之前):用于清理与视图相关的资源,例如释放大型图片或移除对象的引用。这样,当视图被重新加载时,可以减少内存的使用。
- 调用时机:在 iOS 6 之前的版本中,当视图的内存被系统释放时(例如,由于内存警告),
需要注意的是,从 iOS 6 开始,viewDidUnload
被废弃,并且 UIViewController
不再自动卸载视图。因此,现代 iOS 应用通常不需要处理 viewDidUnload
。相反,开发者应该更加关注内存管理,确保在适当的时候释放不再需要的对象,并利用 ARC(自动引用计数)来帮助管理内存。