UIViewController的生命周期有这么几个阶段:
1:创建UIViewController对象调用的方法。即初始化调用-- -(instancetype)init;只调用一次
2:加载视图 -- -loadView();如果我们想要实现从创建一个视图控制器开始,就能有一个自已定制的视图,那么可以在这个方法里加载上。只调用一次
3:加载视图完成执行的方法 - (void)viewDidLoad;只调用一次
注:loadView和viewDidLoad,是当一个UIViewController在调用一个视图的时候,才会开始先调用laodView然后调用ViewDidLoad。但不用UIViewController的视图时候,是不会调用这个两个方法的。
4:视图将要显示到界面了,(Appear是人眼可见的,比如在一个视图控制器上,先隐藏,在显示)多次调用
-(void)viewWillAppear:(BOOL)animated;
5:视图显示到界面 多次调用
-(void)viewDidAppear:(BOOL)animated
6:视图将要消失了(指的是人眼上得消失) 多次调用
-(void)viewWillDisappear:(BOOL)animated;
7:视图已经消失了 多次调用
-(void)viewDidDisappear:(BOOL)animated
注:从4--7 都是视图控制器中对于View的生命周期。
8:内存不够时,会调用此方法,但是是在这个视图控制器存活,但是没有显示在用户可见的界面上,才会调用此方法。
代码:
#import "AZRootViewController.h" @interface AZRootViewController () @end @implementation AZRootViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } //UIViewController的生命周期 //重写父类方法,开始初始化,但是我们一般不会重写这个方法 -(instancetype)init { if (self=[super init]) { } return self; } //重写父类方法,加载视图,但是我们一般不会重写这个方法 -(void)loadView { [super loadView];//使用父类,既默认的UIViewController的视图, //一般不用重写这个方法,但是偶尔我们想要实现从创建一个视图控制器开始,就能有一个自已定制的视图,那么可以在这里加载上 UIView *view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; view.backgroundColor=[UIColor blueColor]; self.view=view; } //视图已经加载完成后要执行的方法 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor=[UIColor yellowColor]; } //loadView和viewDidLoad,是当一个UIViewController在调用一个视图的时候,才会开始先调用laodView然后调用ViewDidLoad。但不用UIViewController的视图时候,是不会调用这个两个方法的。 //重写父类方法,视图将要显示到界面了,(Appear是人眼可见的,比如在一个视图控制器上,先隐藏,在显示) -(void)viewWillAppear:(BOOL)animated { } //重写父类方法,视图显示到界面了 -(void)viewDidAppear:(BOOL)animated { } //重写父类方法,视图将要消失了(指的是人眼上得消失) -(void)viewWillDisappear:(BOOL)animated { } //重写父类方法,视图已经消失了 -(void)viewDidDisappear:(BOOL)animated { } //内存不够时,会调用此方法,但是是在这个视图控制器存活,但是没有显示在用户可见的界面上,才会调用此方法。 - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. //一般可以进行释放内存,就是可以尽力的做一些挽救内存, } //当对象被销毁的时候,调用这个方法,和C++中得析构函数是一样的,和java中得dealloc一样 -(void)dealloc { [super dealloc]; } @end