小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

iOS開發(fā)之loadView和viewDidLoad總結(jié)(一)

 最初九月雪 2015-02-03
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ù)。如:

  1.  - (
  2.   void ) loadView {
  3.   UIView *view
  4.   = [ [ UIView alloc] initWithFrame:[ UIScreen
  5.   mainScreen] .applicationFrame] ;
  6.   [ view
  7.   setBackgroundColor:_color] ;
  8.   self.view = view;
  9.   [ view release] ;
  10.   }
復(fù)制代碼

    你在控制器中實(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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多