當view須要被展現而它倒是nil時,viewController會調用該方法。不要直接調用該方法。html
若是手工維護views,必須重載重寫該方法數據結構
若是使用IB維護views,必須不能重載重寫該方法app
loadView和IB構建view函數
做用:在須要用程序自定義view時從新,其餘狀況能夠不用考慮spa
//在iPhone OS 3.0及以後的版本中,還應該重載重寫viewDidUnload來釋放對view的任何索引code
//viewDidLoad後調用數據Modelhtm
//在視圖加載後被調用,若是是在代碼中建立的視圖加載器,他將會在loadView方法後被調用,對象
//若是是從nib視圖頁面輸出,他將會在視圖設置好後後被調用。blog
做用:分配和載入在視圖顯示時所須要的數據索引
通常狀況下,數據對象是經過配置view controller的屬性來提供的,view controller須要的一些額外的數據應該經過重寫viewDidLoad函數來提供。
- (void)viewWillAppear:(BOOL)animated;
//視圖即將可見時調用。默認狀況下不執行任何操做
加載第五步
- (void)viewDidAppear:(BOOL)animated;
//視圖已徹底過渡到屏幕上時調用
另外若是你這樣寫:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.view = view;
[view release];
// Custom initialization
NSLog(@」initWithNibName」);
}
return self;
}
那麼loadView和viewDidLoad 方法將不會被調用
- (void)viewWillLayoutSubviews ;
- (void)viewDidLayoutSubviews;
卸載過程
卸載第一步
- (void)viewWillDisappear:(BOOL)animated;
//意思是在視圖將要釋放前調用該函數
卸載第二步
- (void)viewDidDisappear:(BOOL)animated;
//viewDidDisappear意思是在視圖釋放時調用。
卸載第三步
- (void)viewWillUnload;//iOS5.0添加
做用:釋放顯示視圖時所須要的不難重建的數據
卸載第四步
- (void)viewDidUnload;
//當系統內存吃緊的時候會調用該方法(注:viewController沒有被dealloc)
//當視圖再也不顯示時釋放那些不須要的數據。
做用:釋放視圖對象的引用和顯示視圖時所須要的不難重建的數據
//可使用viewDidUnload函數釋放視圖擁有的全部數據,固然這些數據在視圖從新載入內存時可以很容易從新//建立。
//若是重建這些數據很消耗時間,那麼沒必要在viewDidUnload函數中釋放這些數據,能夠考慮在//didReceiveMemoryWarning函數釋放這些數據對象
卸載第五步
- (void)didReceiveMemoryWarning;
//釋放在viewDidUnload函數中沒有釋放的數據(重建耗時的數據)
卸載第六步
- (void)dealloc;
//viewController最後的清理工做,釋放視圖對象的引用和viewController所需數據結構
PS: 當程序收到內存不足的警告後, 程序內存中的全部的UIViewController都將會收到didReceiveMemoryWarning調用消息. 目的是將當前不顯示的UIViewController中的view釋放掉(不會調用UIViewController的dealloc方法), 因此當該UIViewController再次顯示的時候又要生成一次, 此時它會調用loadView-> viewDidLoad ->viewWillAppear等, 這時最容易形成內存泄漏!
- (void)didReceiveMemoryWarning;
- (void)viewWillUnload;//iOS5.0添加
- (void)viewDidUnload;
轉載:http://blog.sina.com.cn/s/blog_74f70b7901017gbn.html