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:内存不够时,会调用此方法,但是是在这个视图控制器存活,但是没有显示在用户可见的界面上,才会调用此方法。
9: 当ViewController 对象被销毁的时候,调用这个方法,和 C++ 中得析构函数是一样的,和 java 中得 dealloc 一样
代码:
#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