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之前执行的。

如有错误或不足请指正