VIEWCONTROLLER的启动流程

时间:2023-03-09 19:47:56
VIEWCONTROLLER的启动流程

转载自:http://sunnyyoung.net/post/ios/2015-04-22-viewcontrollerde-qi-dong-liu-cheng-yu-jie-xi

VIEWCONTROLLER的启动流程与解析

ViewController的启动流程: init/initWithCoder -> awakeFromNib -> loadView -> viewDidLoad -> viewWillApear -> viewDidApear

init

用代码创建的View或者ViewController使用这个初始方法

initWithCoder

使用IB创建的View或者ViewController使用这个初始方法

loadView

loadView是ViewController中的一个方法,而且没有必要就永远不能主动调用这个函数。

因为ViewController会在view Property(The view that the controller manages.)被请求且view的值为nil的时候调用这个函数。

如果是使用IB创建view并初始化ViewController则应该使用init withNibName: bundle:方法,而且不应该重载loadView函数。

如果是使用如果代码手动创建该ViewController中的view则应该重载这个函数,而且不必调用[super loadView]

awakeFromNib

当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。也就是说通过nib文件创建view对象是执行awakeFromNib。

如果通过代码手动创建该viewController则不执行awakeFromNib

viewDidLoad

在viewController加载了相关的view之后被调用,且viewDidLoad无论通过什么途径加载(实例化)都会执行这个方法。

awakeFromNib和loadView都是在viewDidLoad之前执行的。

如有错误或不足请指正