首页 > 代码库 > 视图控制器的生命周期(精简)

视图控制器的生命周期(精简)

一、视图控制器的生命周期

只要是对象,就有其生命周期。创建视图控制器无非就两种,一种是纯代码创建,一种是通过加载storyboard、xib文件中加载创建。

 

1. 纯代码创建的生命周期

  • initWithNibName 
  • loadView
  • viewDidLoad
  • viewWillAppear
  • viewWillLayoutSubviews
  • viewDidLayoutSubviews
  • viewDidAppear 
  • viewWillDisappear
  • viewDidDisappear
  • dealloc

 

第一步:initWithNibName分配内存,创建并初始化对象

第二步:loadView到内存里去调用加载视图,调用这个方法之前,会调用view的getter方法,如果没有获取到view,再调用此方法进行加载

第三步:viewDidLoad表示已加载完视图,此时可以配置视图的其他信息

第三步:viewWillApear表示视图信息都加载完,即将显示出来

第四步:viewWillLayoutSubviews将要对视图的子视图进行布局

第五步:viewDidLayoutSubviews子视图布局完毕,其中第四,第五步会多次调用2次,第一次是系统默认,第二次是调用我们设置的约束

第六步:viewDidAppear视图显示在屏幕上

第七步:viewWillDisappear视图即将从屏幕消失

第八步:viewDidDisappear视图从屏幕上消失

第九步:dealloc销毁视图,回收内存

 

2. storyboard、xib文件中加载创建

  • initWithCoder
  • awakeFromNib
  • loadView
  • viewDidLoad
  • viewWillAppear
  • viewWillLayoutSubviews
  • viewDidLayoutSubviews
  • viewDidAppear 
  • viewWillDisappear
  • viewDidDisappear
  • dealloc

 相比纯代码创建的不同之处在于前面几步:

第一步:initWithCoder把storyboard、xib对象的实例变量和其他数据编码为数据块载入内存

第二步:在载入内存的同时,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作

 

视图控制器的生命周期(精简)