iOS 开发 Objective-C

iOS 代码探究 ViewController 的生命周期方法

2020-10-28  本文已影响0人  望穿秋水小作坊

一、环境构建

1. 将下列代码复制到要探究的 ViewController 中
//类的初始化方法
+ (void)initialize {
    NSLog(@"%s", __func__);
    [super initialize];
}
//对象初始化方法
- (instancetype)init {
    NSLog(@"%s", __func__);
    return [super init];
}
//从归档初始化
- (instancetype)initWithCoder:(NSCoder *)coder
{
    NSLog(@"%s", __func__);
    return [super initWithCoder:coder];
}
// 通常使用 awakeFromNib() 可以进行在Storyboard设计时无法完成的必要额外设置。
- (void)awakeFromNib {
    NSLog(@"%s", __func__);
    [super awakeFromNib];
}
//加载视图
-(void)loadView {
    NSLog(@"%s", __func__);
    [super loadView];
}
//将要加载视图
- (void)viewDidLoad {
    NSLog(@"%s", __func__);
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor yellowColor];
}
//将要布局子视图
-(void)viewWillLayoutSubviews {
    NSLog(@"%s", __func__);
    [super viewWillLayoutSubviews];
}
//已经布局子视图
-(void)viewDidLayoutSubviews {
    NSLog(@"%s", __func__);
    [super viewDidLayoutSubviews];
}
//内存警告
- (void)didReceiveMemoryWarning {
    NSLog(@"%s", __func__);
    [super didReceiveMemoryWarning];
}
//已经展示
-(void)viewDidAppear:(BOOL)animated {
    NSLog(@"%s", __func__);
    [super viewWillAppear:animated];
}
//将要展示
-(void)viewWillAppear:(BOOL)animated {
    NSLog(@"%s", __func__);
    [super viewWillAppear:animated];
}
//将要消失
-(void)viewWillDisappear:(BOOL)animated {
    NSLog(@"%s", __func__);
    [super viewWillDisappear:animated];
}
//已经消失
-(void)viewDidDisappear:(BOOL)animated {
    NSLog(@"%s", __func__);
    [super viewDidDisappear:animated];
}
//被释放
-(void)dealloc {
    NSLog(@"%s", __func__);
}

二、ViewController 之间的 push 和 pop

1. 纯代码构建 SecondViewController ,由 push 到 pop 调用顺序
Demo[7766:315672] +[SecondViewController initialize]
Demo[7766:315672] -[SecondViewController init]
Demo[7766:315672] -[SecondViewController loadView]
Demo[7766:315672] -[SecondViewController viewDidLoad]
Demo[7766:315672] -[SecondViewController viewWillAppear:]
Demo[7766:315672] -[SecondViewController viewWillLayoutSubviews]
Demo[7766:315672] -[SecondViewController viewDidLayoutSubviews]
Demo[7766:315672] -[SecondViewController viewDidAppear:]
Demo[7766:315672] -[SecondViewController viewWillDisappear:]
Demo[7766:315672] -[SecondViewController viewDidDisappear:]
Demo[7766:315672] -[SecondViewController dealloc]
2. xib 构建 SecondViewController ,由 push 到 pop 调用顺序
Demo[7907:322725] +[SecondViewController initialize]
Demo[7907:322725] -[SecondViewController initWithCoder:]
Demo[7907:322725] -[SecondViewController awakeFromNib]
Demo[7907:322725] -[SecondViewController loadView]
Demo[7907:322725] -[SecondViewController viewDidLoad]
Demo[7907:322725] -[SecondViewController viewWillAppear:]
Demo[7907:322725] -[SecondViewController viewWillLayoutSubviews]
Demo[7907:322725] -[SecondViewController viewDidLayoutSubviews]
Demo[7907:322725] -[SecondViewController viewDidAppear:]
Demo[7907:322725] -[SecondViewController viewWillDisappear:]
Demo[7907:322725] -[SecondViewController viewDidDisappear:]
Demo[7907:322725] -[SecondViewController dealloc]
3. 纯代码构建 SecondViewController ,push 到 纯代码构建 ThirdViewController ,然后再 pop,仅关注 push 和 pop
Demo[8297:338910] +[ThirdViewController initialize]
Demo[8297:338910] -[ThirdViewController init]
Demo[8297:338910] -[ThirdViewController loadView]
Demo[8297:338910] -[ThirdViewController viewDidLoad]
Demo[8297:338910] -[SecondViewController viewWillDisappear:]
Demo[8297:338910] -[ThirdViewController viewWillAppear:]
Demo[8297:338910] -[ThirdViewController viewWillLayoutSubviews]
Demo[8297:338910] -[ThirdViewController viewDidLayoutSubviews]
Demo[8297:338910] -[SecondViewController viewDidDisappear:]
Demo[8297:338910] -[ThirdViewController viewDidAppear:]
Demo[8297:338910] -[ThirdViewController viewWillDisappear:]
Demo[8297:338910] -[SecondViewController viewWillAppear:]
Demo[8297:338910] -[ThirdViewController viewDidDisappear:]
Demo[8297:338910] -[SecondViewController viewDidAppear:]
Demo[8297:338910] -[ThirdViewController dealloc]
4. ViewController 之间的 present 和 dismiss

三、 ViewController 的各个方法解释说明

1. - (instancetype)initWithCoder:(NSCoder *)coder
2. - (void)awakeFromNib
3. - (instancetype)init
4. loadView()
5. viewDidLoad()
6. viewWillAppear()
7. viewWillLayoutSubviews()
8. viewDidLayoutSubviews()
9. viewDidAppear()
10. viewWillDisappear()
11. viewDidDisappear()
12. didReceiveMemoryWarning()
13. dealloc()
上一篇 下一篇

猜你喜欢

热点阅读