当我们说一个界面的时候往往都会谈到生命周期,所谓生命周期,通俗地说是指对象的生老病死,对于ViewController来说,则是指一个界面从初始化到注销的过程。
我们知道ViewController在iOS开发中成为视图控制器,一般来说控制一个界面,有的是对于一个特定类型的界面,如UITableViewController,有时候是指一个界面框架,如UINavigationViewController,更多时候,是指我们自定义的界面。
创建一个界面对象是,一般是两种方法,一种是用storyboard(或者是以前的Nib文件),另一种是用代码来自行定义界面元素。
对于一个界面来说,其生命周期过程通常可分为下面几个步骤:
- alloc
- initWithNibName
- loadView
- viewDidLoad
- viewWillAppear
- viewDidAppear
- viewWillDisappear
- viewDidDisappear
- dealloc
其各自代表的过程从其命名就大致可以看出来,从初始化,到加载,到显示,到不显示,到注销。大致是这么一个过程。
我们添加界面元素时一般是在viewDidLoad方法中,而在Appear方法中一般会进行一些界面初始调用的内容,在Disappear中往往就是一些在注销界面前要做的一些处理了,如保存数据等。
需要注意的是iOS对一个界面生命历程的处理:
- 当启动一个程序是,会调用界面的viewDidLoad、viewWillAppear、viewDidAppear方法;
- 当点击Home键回到桌面时,注意并不会调用Disppear的相关方法;
- 当双击Home键删除应用时,才会调用viewWillDisappear、viewDidDisappear方法。
iOS 4以后,引入了后台概念,view会被挂起,但并不会调用Appear和Disappear相关方法。
此外,只有用代码自定义界面,而不是用nib文件或者storyboard初始化界面时,才会调用loadView方法,loadView方法只会调用一次,而viewDidLoad方法可能会调用多次。
其实对于生命周期的理解更多的是帮助在开发过程中在更合适的地方进行一些工作,希望能帮到大家~