ViewController的LoadView和ViewDidLoad方法相關知識總結

     首先介紹一下View的生命週期,以下圖所示:性能

     ViewController的LoadView和ViewDidLoad方法分別何時會調用呢?又是誰調用的它們?spa

  • 在vc初始化時(此處不明確是不是init()裏調用,因此沒有具體那個或者哪些方法而是用「初始化」這麼抽象的描述。。),會調用loadView(),而後執行ViewDidLoad(),由於複寫的loadView中並無調用ViewDidLoad,但其確實被調用了,因此肯定其不是在viewLoad中調用。對象

  • 當執行[self view]時,若是view==nil(view爲null,相信主要就是viewDidUnLoad()的[supper viewDidUnLoad]將其賦值爲nil),則調用loadView及ViewDidLoad;生命週期

    loadView():it

  • 其[supper loadView]會根據是否有xil以生成view對象,沒有則new一個UIView對象給view,也就是說loadView中會生成View對象io

  • 假如咱們要複寫loadView,給view賦一個咱們自定義的view,就不要調用[supper loadView]了,大神們都說這樣作會影響性能,但沒解釋爲何會下降性能,我想由於[supper loadView]在這種應用場景下調用就是一行多餘的代碼,由於你自定義的View最終會替代[supper loadView]所建立的view。方法

    viewDidLoad():im

  • 一般咱們對view的進一步初始化會寫在這裏面,好比加入button等;img

  • 這兩個方法都是對view進行初始化且都會一塊兒被調用,loadView給view建立了對象。view

相關文章
相關標籤/搜索