MST

星途 面试题库

面试题:Objective-C应用生命周期中视图控制器的加载与卸载过程

请详细描述在Objective-C应用中,视图控制器从加载到卸载,各个关键方法的调用顺序及其作用,比如viewDidLoad、viewWillAppear、viewDidDisappear等方法。
45.2万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. initinitWithCoder:
    • 调用顺序:最先调用,在创建视图控制器实例时执行。
    • 作用:用于初始化视图控制器,为其属性设置初始值等。init 是普通初始化方法,initWithCoder: 用于从归档中初始化视图控制器(比如在使用Interface Builder创建视图控制器时会用到)。
  2. loadView
    • 调用顺序:在视图控制器的视图第一次被访问且视图为 nil 时调用。
    • 作用:用于创建视图控制器的视图层次结构。如果通过代码创建视图,通常在这个方法中实例化视图并添加子视图;如果使用Interface Builder,系统会自动从nib文件加载视图。
  3. viewDidLoad
    • 调用顺序:在 loadView 之后调用,且仅调用一次。
    • 作用:用于进行视图加载完成后的一些初始化操作,比如设置视图的属性、添加手势识别器、初始化数据等。此方法适合进行一次性的配置工作。
  4. viewWillAppear:
    • 调用顺序:在视图即将添加到窗口并显示之前调用,每次视图将要显示时都会调用,包括首次显示和从后台切换到前台等情况。
    • 作用:用于执行一些与视图显示相关的准备工作,例如更新视图的布局、根据数据刷新UI等。
  5. viewDidAppear:
    • 调用顺序:在视图已经添加到窗口并显示之后调用,每次视图显示后都会调用。
    • 作用:可以用于执行一些需要在视图显示后立即执行的操作,比如启动动画、开始监听某些事件等。
  6. viewWillDisappear:
    • 调用顺序:在视图即将从窗口移除并消失之前调用,每次视图将要消失时都会调用,例如视图控制器被推出导航栈、切换到其他视图控制器等情况。
    • 作用:用于执行一些与视图消失相关的清理工作,比如停止动画、移除监听等。
  7. viewDidDisappear:
    • 调用顺序:在视图已经从窗口移除并消失之后调用,每次视图消失后都会调用。
    • 作用:可以用于执行一些需要在视图消失后立即执行的操作,比如释放一些资源等。
  8. dealloc
    • 调用顺序:在视图控制器实例即将被销毁时调用。
    • 作用:用于释放视图控制器占用的资源,比如取消网络请求、释放持有的对象等。需要注意的是,在ARC环境下,大部分对象的内存管理由系统自动完成,但对于一些非ARC管理的资源(如Core Foundation对象等)仍需要手动释放。