ViewController生命周期方法执行顺序

warning 生命周期的方法调用顺序是从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的区别

Apple的文档很清楚地说明了initialize和load的区别在于:load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。


ViewController生命周期方法执行顺序_第1张图片
ViewController生命周期

你可能感兴趣的:(ViewController生命周期方法执行顺序)