init和viewDidLoad
2017-07-25 本文已影响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怎么会被执行。