5.视图控制器的生命周期函数
- (void)dealloc{
NSLog(@"Root Dealloc");
[super dealloc];
}
//创建 视图控制器 调用init 函数的时候会自动调用
//在initWithNibName函数 最好不要写self.view的操作
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
NSLog(@"root_initWithNibName");
}
return self;
}
//加载视图控制器视图view
#pragma mark - loadView
- (void)loadView {
[super loadView];
NSLog(@"root_loadView");
}
//在执行viewDidLoad 的时候 视图view已经存在了
//实现两个视图控制器之间的切换
- (void)viewDidLoad
{
NSLog(@"root_viewDidLoad");
[super viewDidLoad];//一般第一句先调用父类的
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor redColor];
[self creatButtons];
}
#pragma mark - 当视图控制器视图将要显示在屏幕上的时候调用
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"root_viewWillAppear");
}
#pragma mark - 当视图控制器的视图已经显示在屏幕上的时候调用
- (void)viewDidAppear:(BOOL)animated{
_isFront = YES;
[super viewDidAppear:animated];
NSLog(@"root_viewDidAppear");
}
#pragma mark -当视图控制器的视图将要离开屏幕的时候调用
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"Root_viewWillDisappear");
}
#pragma mark -当视图控制器的视图已经离开屏幕的时候调用
- (void)viewDidDisappear:(BOOL)animated{
_isFront = NO;
[super viewDidDisappear:animated];
NSLog(@"Root_viewDidDisappear");
}
#pragma mark 将要布局子视图的时候调用
- (void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews];
NSLog(@"root_将要布局子视图");
}
#pragma mark 已经布局子视图的时候调用
- (void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
NSLog(@"root_已经布局子视图");
}
#pragma mark - 发生低内存警告的时候调用
- (void)didReceiveMemoryWarning
{
NSLog(@"root_低内存警告");
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
//当发生低内存警告的时候 如果当前界面没有显示在屏幕上 那么我们一般会把 view release 掉 并把view 置为nil
if (_isFront == NO) {
self.view = nil;
//一旦 把 view release 并且置为nil 之后下次再显示这个界面的时候 又会重新加载视图 loadView 开始
}
//当出现了 低内存警告 那么一般会把 不显示的view 给释放掉
}