视图控制器的生命周期(精简)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视图控制器的生命周期(精简)相关的知识,希望对你有一定的参考价值。
一、视图控制器的生命周期
只要是对象,就有其生命周期。创建视图控制器无非就两种,一种是纯代码创建,一种是通过加载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函数来响应这个消息,执行一些必要的操作
以上是关于视图控制器的生命周期(精简)的主要内容,如果未能解决你的问题,请参考以下文章