UIViewController 生命周期方法与业务逻辑

UIViewController 生命周期方法与业务逻辑

UIViewController 生命周期的主要包括9个方法:

init

默认初始化

  • 业务逻辑

    可以初始化数据

  • 注意事项

    不要创建 view。不要调用 self.view。因为view是lazyinit的,调用 self.view,会导致viewcontroller创建view。

loadView

加载 view,如果是从 nib 文件或者 stroyboard加载,则加载相关文件,如果没有,则创建默认的 view。

  • 业务逻辑

    不要重载该方法,创建 view 可以在viewDidLoad中

  • 注意事项

    不要创建view。不要调用 self.view。要调用都在 [super loadView]后。

viewDidLoad

加载view完成。

  • 业务逻辑

    创建附加 view,但是 self.view 的 frame 不可用。

  • 注意事项

    该方法可能调用多次。

viewWillApper

view被添加到superview之前,切换动画之前调用。

  • 业务逻辑

    显示前的处理。如键盘弹出,状态条和navigationbar颜色。

  • 注意事项

    此时 View的 frame 不定,不能利用frame的值

viewDidApper

view 已经显示,动画切换完成

  • 业务逻辑

    业务处理 ,可以使用 self.view 的 frame

  • 注意事项

    暂无

viewWillDisapper

view移出之前,还未调用 removeFromSuperView

  • 业务逻辑

    根据具体业务处理

  • 注意事项

    暂无

viewDidDisapper

view移出完成,动画完成。

  • 业务逻辑

    处理view 不显示时的一些业务逻辑。

  • 注意事项

    暂无

viewDidUnload

一般发生在内存警告时,view置为nil

  • 业务逻辑

    可以释放其他view,比如viewcontroller的 self.view上加了一个label,而且这个label是viewcontroller的属性,那么你要把这个属性设置成nil,以免占用不必要的内存,而这个label在viewDidLoad时会重新创建。

  • 注意事项

    暂无

dealloc

销毁时调用

  • 业务逻辑

    移除观察者,定时器等

  • 注意事项

    在 ARC 环境下,不能主动调用 dealloc 方法。