首先介绍一下View的生命周期,如下图所示:
ViewController的LoadView和ViewDidLoad方法分别什么时候会调用呢?又是谁调用的它们?
在vc初始化时(此处不明确是否是init()里调用,所以没有具体那个或者哪些方法而是用“初始化”这么抽象的描述。。),会调用loadView(),然后执行ViewDidLoad(),因为复写的loadView中并没有调用ViewDidLoad,但其确实被调用了,所以确定其不是在viewLoad中调用。
当执行[self view]时,如果view==nil(view为null,相信主要就是viewDidUnLoad()的[supper viewDidUnLoad]将其赋值为nil),则调用loadView及ViewDidLoad;
loadView():
其[supper loadView]会根据是否有xil以生成view对象,没有则new一个UIView对象给view,也就是说loadView中会生成View对象
假如我们要复写loadView,给view赋一个我们自定义的view,就不要调用[supper loadView]了,大神们都说这样做会影响性能,但没解释为什么会降低性能,我想因为[supper loadView]在这种应用场景下调用就是一行多余的代码,因为你自定义的View最终会替代[supper loadView]所创建的view。
viewDidLoad():
通常我们对view的进一步初始化会写在这里面,比如加入button等;
这两个方法都是对view进行初始化且都会一起被调用,loadView给view创建了对象。