美文网首页
UIViewController的学习

UIViewController的学习

作者: 广东煲仔饭049 | 来源:发表于2016-02-09 13:01 被阅读27次

    关于UIViewController的声明周期

    源于一次在使用时发现有个property初始化赋值后其输出还是nil

    UIViewController的生命周期简单来说主要调用了以下几个方法(通过代码创建)
    1.alloc :分配空间 (类方法)
    2.init :创建实例
    3.loadView
    4.viewDidLoad
    5.viewWillAppear
    6.viewDidAppear
    7.viewWillDisappear
    8.viewDidDisappear

    有个需要注意的是init和viewDidLoad,就是这样的一个push到新controller的过程


    UIbuttonClick_2.gif

    我在各方法添加了个NSLog,对于单个控制器这样的一个操作就是下面这样的一个流程

    屏幕快照 2016-02-01 20.09.20.png

    打上断点可以发现虽然是先跑的init,但是因为有 self = [super init] 这一行代码,会导致我们先走父类的方法(父类又会去根据子类的重写去跑子类的方法)因此就导致 NSLog(@"First_init");这一行代码的执行是会在viewDidLoad后才执行的。

    - (instancetype)init
    {
        self = [super init];
        if (self) {
            self.title = @"第一个控制器";
            NSLog(@"First_init");
        }
        return self;
    }
    

    所以对于viewController内的属性初始化要放在适当的位置,避免出现未初始化就使用的情况

    如果没走 下面这一行的话,就是按照这样的顺序的
    self = [super init]

    屏幕快照 2016-02-01 19.51.50.png

    相关文章

      网友评论

          本文标题:UIViewController的学习

          本文链接:https://www.haomeiwen.com/subject/nniykttx.html