| iPhone開發(fā)必不可少的要用到這兩個方法。 他們都可以用來在視圖載入的時候,初始化一些內(nèi)容。 但是他們有什么區(qū)別呢? viewDidLoad 此方法只有當(dāng)view從nib文件初始化的時候才被調(diào)用。viewDidLoad用于初始化,加載時用到的。 loadView 此方法在控制器的view為nil的時候被調(diào)用。 此方法用于以編程的方式創(chuàng)建view的時候用到。loadView是使用代碼生成視圖的時候,當(dāng)視圖第一次載入的時候調(diào)用的方法。用于使用(寫)代碼來實(shí)現(xiàn)控件。用于使用代碼生成控件的函數(shù)。如: 
 你在控制器中實(shí)現(xiàn)了loadView方法,那么你可能會在應(yīng)用運(yùn)行的某個時候被內(nèi)存管理控制調(diào)用。 如果設(shè)備內(nèi)存不足的時候, view 控制器會收到didReceiveMemoryWarning的消息。默認(rèn)的實(shí)現(xiàn)是檢查當(dāng)前控制器的view是否在使用。如果它的view不在當(dāng)前正在使用的view hierarchy里面,且你的控制器實(shí)現(xiàn)了loadView方法,那么這個view將被release, loadView方法將被再次調(diào)用來創(chuàng)建一個新的view。 viewDidLoad ,不論是從xib中加載視圖,還是從loadview生成視圖,都會被調(diào)用。 UIViewController 的內(nèi)存管理 在 iOS3.0 后,UIViewController 多了一個叫做 viewDidUnLoad 的方法。 先看下 UIViewController 從創(chuàng)建 view 到展示的流程的幾個函數(shù) -init -initWithNibName:bundle: 這兩個方法都是初始化一個 vc,但請注意 view 不是這時候載入的 -loadView -viewDidLoad 當(dāng)一個視圖準(zhǔn)備展現(xiàn)時,vc 首先會判斷 view 是否已經(jīng)創(chuàng)建否則便通過之前指定的 xib 文件來初始化 view,以及綁定其他關(guān)系(若沒有指定 xib 文件,則默認(rèn)會搜索和 vc 同名的 xib,比如 myNameViewController 就會搜索 myNameViewController.xib 文件) 若是沒有xib 文件,你就可以在 loadview 中自己手動創(chuàng)建這個 viewControoler 需要的視圖。接下來就是調(diào)用到 -viewDidLoad,許多人喜歡在這里做些其他事情,比如做個 http 請求、建立個數(shù)組啥的。這里若不處理正確,-viewDidUnload激活時內(nèi)存就容易泄露了,稍后提到。 -view()appear -view()disappear 這幾個方法就不解釋了 -viewDidUnload 該方法在收到內(nèi)存警告,同時該視圖并不在當(dāng)前界面顯示時候會被調(diào)用,此時該controller 的 view 已經(jīng)被釋放并賦值為 nil。 接下來你要做的是把實(shí)例變量的子視圖釋放(IBOulet的,以及自己添加的)其他實(shí)例變量,比如之前在 -viewDidLoaded 中實(shí)例的數(shù)據(jù)數(shù)組、http 請求釋放掉。 因?yàn)楫?dāng)該為空后會重復(fù)之前的流程直到把 view 給創(chuàng)建起來。若沒將自己額外添加的子視圖,各種類實(shí)例變量釋放,這里便會重新再次創(chuàng)建。 于是,內(nèi)存泄露了。 注意iphone開發(fā)中的這兩個函數(shù)viewWillAppear和viewDidAppear 每當(dāng)視圖準(zhǔn)備在屏幕上顯示,或者視圖已在屏幕上完全顯示時,將調(diào)用這兩個方法。 viewWillAppear:方法更新準(zhǔn)備顯示的視圖的信息。調(diào)用時,視圖可能還沒有被加載。 使用viewDidAppear:來觸發(fā)視圖完全顯示在屏幕上之后的行為,例如任何動畫。 viewdidload是當(dāng)程序第一次加載view時調(diào)用,以后都不會用到,而viewDidAppear是每當(dāng)切換到view時就調(diào)用。 loadView和viewDidLoad方法。假設(shè)不使用xib文件對視圖布局,那么loadView方法必須設(shè)置屏幕,并對任何子視圖布局。每當(dāng)繼承一個具體的子類,例如UITableViewController或UITabBarController時,務(wù)必調(diào)用[super loadView]或者實(shí)現(xiàn)viewDidLoad。這樣一來,在進(jìn)行定制之前,父類可以對屏幕進(jìn)行適當(dāng)?shù)脑O(shè)置。當(dāng)代碼基于具體的子類時,蘋果的文檔和示例代碼鼓勵使用viewDidLoad。 viewDidLoad 此方法只有當(dāng)view從nib文件初始化的時候才被調(diào)用。viewDidLoad用于初始化,加載時用到的。 loadView 此方法在控制器的view為nil的時候被調(diào)用。 此方法用于以編程的方式創(chuàng)建view的時候用到。loadView是使用代碼生成視圖的時候,當(dāng)視圖第一次載入的時候調(diào)用的方法。用于使用(寫)代碼來實(shí)現(xiàn)控件。用于使用代碼生成控件的函數(shù)。 viewDidLoad ,不論是從xib中加載視圖,還是從loadview生成視圖,都會被調(diào)用。 原帖地址http://www./forum.php?mod=viewthread&tid=10507&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline | 
|  |