loadView 這個(gè)方法決定了 視圖控制器剛加載出來(lái)樣式,也就是loadView中的self.view 是什么樣子,viewDidload出來(lái)就是什么樣子
每一個(gè)控制器都有一個(gè)view屬性,但是在系統(tǒng)調(diào)用loadView 之前,這個(gè)屬性為nil
//這是系統(tǒng)的UIViewController 的屬性
@property(null_resettable, nonatomic,strong) UIView *view;
- (void) loadView{
[super loadView] //系統(tǒng)在這個(gè)方法里給控制器的view 初始化(實(shí)例化)出來(lái)
}
- (void) loadView{
UIView *vv = [[UIView alloc] init] //與上一句的效果是一樣的
self.view = vv
}
通過(guò)代碼創(chuàng)建
用代碼創(chuàng)建視圖控制器的時(shí)候系統(tǒng)會(huì)自動(dòng) 實(shí)現(xiàn)[self loadView] ,創(chuàng)建一個(gè)無(wú)色透明的 view放到視圖控制器上
視圖控制器只是控制和管理視圖,是一個(gè)抽象的概念,視圖才是具體的存在
通過(guò)xib和sb 創(chuàng)建
通過(guò)xib 和storyBoard創(chuàng)建的視圖控制器,系統(tǒng)會(huì)是用它們自帶的view加載視圖,但是系統(tǒng)也會(huì)調(diào)用[self loadView]這句代碼 . 也就是通過(guò)xib和storyBoard和代碼創(chuàng)建,視圖控制器的時(shí)候都會(huì)調(diào)用這個(gè)方法
何時(shí)調(diào)用loadView
loadView方法僅在用代碼創(chuàng)建視圖控制器的界面時(shí)使用
在loadView方法中根據(jù)實(shí)際需求來(lái)確定到底是否需要調(diào)用[super loadView] 加載view,也就是用到的時(shí)候才加載,也就是延時(shí)加載,通俗的講是懶加載

Snip20160325_15.png