跳到主要内容

ViewController 的 loadView,、viewDidLoad,、viewDidUnload 分别是在什么时候调用的?

参考答案:

UIViewControllerloadViewviewDidLoadviewDidUnload 方法在 iOS 应用的生命周期中扮演着重要的角色,它们分别在特定的时刻被调用。以下是关于这三个方法调用时机的详细解释:

  1. loadView

    • 调用时机:当 view 属性首次被访问,并且该属性当前为 nil 时,loadView 方法会被调用。
    • 主要作用:为控制器加载或创建视图。默认情况下,如果你没有重写 loadView 方法,系统会尝试从 nib 文件中加载视图(如果与控制器关联的 nib 文件存在)。如果你重写了 loadView 方法,你应该在其中创建或加载你的视图,并将其赋值给 self.view
  2. viewDidLoad

    • 调用时机:在 loadView 方法执行完成后,并且视图层次结构已经准备好时,viewDidLoad 方法会被调用。这通常意味着视图已经被加载到了内存中,但还没有被显示到屏幕上。
    • 主要作用:用于执行一些初始化操作,比如添加子视图、设置初始状态、绑定数据等。这个方法是进行视图控制器初始化配置的好地方。
  3. viewDidUnload

    • 调用时机:在 iOS 6 之前的版本中,当视图的内存被系统释放时(例如,由于内存警告),viewDidUnload 方法会被调用。但在 iOS 6 及以后的版本中,这个方法已经被废弃,因为 UIViewController 不再自动卸载视图。因此,对于现代 iOS 开发,通常不需要关心 viewDidUnload
    • 主要作用(在 iOS 6 之前):用于清理与视图相关的资源,例如释放大型图片或移除对象的引用。这样,当视图被重新加载时,可以减少内存的使用。

需要注意的是,从 iOS 6 开始,viewDidUnload 被废弃,并且 UIViewController 不再自动卸载视图。因此,现代 iOS 应用通常不需要处理 viewDidUnload。相反,开发者应该更加关注内存管理,确保在适当的时候释放不再需要的对象,并利用 ARC(自动引用计数)来帮助管理内存。