关于UIViewController的生命周期,它大致可以分为两种情况。第一种是由storyboard或者xib创建的视图控制器的view,另一种则是代码创建的view。
1.view是由xib创建,它会执行awakeFromNib方法,此方法是当xib或者storyboard加载完之后调用,此时nib文件中已经连线好的对象已经完成初始化,frame位置已固定。
-(void)awakeFromNib
2.loadView,此方法是创建视图控制器的view,当view为nil的时候会调用此方法,在此方法里如果没有正确的初始化view导致view=nil的话,执行下一步viewDidLoad且view也等于nil时,会发生死循环。
-(void)loadView
3.viewDidLoad,此方法是视图控制器将视图层次结构加载到内存之后调用,无论视图层次结构是从nib文件中加载还是从loadView方法里用代码实现都会执行此方法。
- (void)viewDidLoad
4.viewWillAppear,此方法通知视图控制器其视图即将添加到视图层次结构中。
-(void)viewWillAppear:(BOOL)animated
5.viewWillLayoutSubViews,此方法是通知视图控制器其视图将要布局它的子视图。
-(void)viewWillLayoutSubviews
6.viewDidLayoutSubViews,此方法是通知视图控制器其视图已经将它的子视图布局好。
-(void)viewDidLayoutSubviews
7.viewDidApperar,此方法是通知视图控制器其视图已经添加到视图层次结构中。
-(void)viewDidAppear:(BOOL)animated
8.viewWillDisAppear,此方法是通知视图控制器其视图将要从视图层次结构中删除。
-(void)viewWillDisappear:(BOOL)animated
9.viewDidDisAppear,此方法是通知视图控制器其视图已经从视图层次结构中删除。
-(void)viewDidDisappear:(BOOL)animated
10.didReceiveMemoryWarning,当应用收到内存警告时会调用此方法。
-(void)didReceiveMemoryWarning
下面是UIViewController的生命周去流程图: