init和viewDidLoad

作者: 追沐 | 来源:发表于2017-07-25 16:11 被阅读27次

    init方法

    • init方法是OC对象初始化的方法,所有继承自NSObjct的类都有init方法。
    • 当调用类的初始化时候就会执行init方法。

    viewDidLoad方法

    • viewDidLoad方法是ViewController的生命周期中的一个方法;
    • 当视图被加载的时候才会执行viewDidLoad方法,比如push的时候,present的时候,添加子控制器的时候等。如果没有这些操作viewDidLoad不会被执行的,也就是说,需要加载视图的时候才会执行viewDidLoad方法。

    执行init方法和执行viewDidLoad有什么联系吗

    • 执行init方法与执行viewDidLoad方法没什么联系,他们的触发机制都不一样。init方法是初始化对象的时候执行,初始化了对象如果不执行push等操作viewDidLoad方法就不会被执行。

    为什么平时我们的感觉init方法执行后就会执行viewDidLoad方法

    • 那绝对是我们的错觉,开发中一般创建了对象(执行了init方法)后,我们接着就会将这个对象push出来或者将试图加载出来,所以随之就执行了viewDidLoad方法,导致初学者认为init方法和viewDidLoad是有关联的,其实并不是这样。

    如果你发现init方法执行了,viewDidLoad死活就是不执行怎么办

    • 检查一下看看重新运行的时候viewDidLoad执行了没,如果执行了,第二次push的时候viewDidLoad方法不执行了,那就检查检查看看要push的controller是不是没有被释放。
    • 如果不是上面的问题,那么检查一下,你有没有执行push、present、addChildViewController等添加视图的操作,如果没有的话肯定不会执行viewDidLoad方法啊,因为根本就没有触发加载视图的方法,viewDidLoad怎么会被执行。

    相关文章

      网友评论

        本文标题:init和viewDidLoad

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