UIViewController的初始化

UIViewController的初始化一般有两个:

-(instancetype)init;

-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

而init会调用initWithNibName:bundle:,因此基本上只使用后者作为初始化入口。

这两个初始化作用一般仅用于一些数据的初始化,而不涉及到视图的初始化,因此正常情况下,调用完初始化方法后,self.view还是nil.

仅在第一次以获取的方式访问self.view时,会触发loadView,如果子类实现了loadView,则通过调用子类loadView来初始化视图;

否则,loadView会查找nib文件(根据之前初始化时传入的nib文件名或者使用默认nib文件名)并加载;如果查找失败,loadView会创建一个空的View对象。

loadView结束后会调用viewDidLoad,但是不保证当前self.view非空(可能用户实现loadView时忘记对self.view赋值)。

 

 

posted @ 2015-04-21 14:23  郭晓倩  阅读(781)  评论(0编辑  收藏  举报