相信大家在学习ios的过程中,肯定会遇到这些方法,现在我来讲讲这些方法的区别。
我们先来了解每个方法的作用:
viewDidLoad-加载视图;
viewWillAppear-VC对象的视图即将加入窗口时调用;
viewDidAppear-VC对象的视图已经加入窗口时调用;
viewWillDisappear-VC对象的视图即将消失,被覆盖或是隐藏时调用;
viewDidDisappear-VC对象的视图已经消失,被覆盖或是隐藏时调用;
viewWillUnload-当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用;
viewDidUnload-当内存过低时,需要释放一些不需要的视图时调用;
其实,视图是通过alloc和init创建的,在创建的时候并不是立刻就创建出来,而是等到需要的时候才会通过loadView去创建相应的视图,这样的做法可以提高使用率。
写了个程序,测试一下运行的效果:
- (void)viewWillUnload {
[super viewWillUnload];
NSLog(@"viewWillUnload");
}
- (void)viewDidUnload {
[super viewDidUnload];
NSLog(@"viewDidUnload");
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"viewDidLoad");
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"viewWillAppear");
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"viewWillDisappear");
}
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"viewDidAppear");
}
- (void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
NSLog(@"viewDidDisappear");
}
运行结果如下:
忘了个init,正常的顺序应该是init,viewDidLoad,viewWillAppear,最后才是viewDidAppear;
当视图创建好了以后,视图要消失或者覆盖掉了的时候,会调用viewWillDisappear,viewDidDisappear;
当发出内存警告的时候,会调用viewWillUnload,viewDidUnload;
-------分割线---------
注意:ViewDidLoad是程序第一次加载view的时候调用,以后都不会用到,而viewDidAppear是每切换到view时就调用;
loadView在控制器的view为nil的时候被调用,创建view的时候调用;