warning 生命周期的方法調(diào)用順序是從1到10
// 1
- (instancetype)init
{
self = [super init];
if (self) {
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
return self;
}
// 2
- (void)loadView
{
[super loadView];
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
// 3
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
// 4
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
// 5
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
// 6
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
// 7
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
// 8
- (void)viewWillUnload
{
[super viewWillUnload];
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
// 9
- (void)viewDidUnload
{
[super viewDidUnload];
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
// 10
- (void)dealloc
{
NSLog(@"%s, line = %d", __FUNCTION__, __LINE__);
}
initialize和load的區(qū)別
Apple的文檔很清楚地說明了initialize和load的區(qū)別在于:load是只要類所在文件被引用就會(huì)被調(diào)用速那,而initialize是在類或者其子類的第一個(gè)方法被調(diào)用前調(diào)用畅蹂。所以如果類沒有被引用進(jìn)項(xiàng)目赌结,就不會(huì)有l(wèi)oad調(diào)用;但即使類文件被引用進(jìn)來,但是沒有使用,那么initialize也不會(huì)被調(diào)用。
ViewController生命周期