loadView、viewDidLoad、viewDidUnload、dealloc的關系

一:loadView

????????用于加載VC上的主View,可以將主View做成一個單View,在loadView中初始化,布局

二:viewDidLoad

????????于界面上的初始化操作

三:viewDidUnload

? ??????View的父視圖消失就一起消失

????????iOS設備的內存是極其有限的,如果應用程序占用的內存過多的話,系統(tǒng)就會對應用程序發(fā)出內存警告。UIViewController就會收到didReceiveMemoryWarning消息。????????????????????????????????????????????didReceiveMemoryWarning方法的默認實現(xiàn)是:如果當前UIViewController的view不在應用程序的視圖層次結構(View Hierarchy)中,即view的superview為nil的時候,就會將view釋放,并且調用viewDidUnload方法

四:dealloc

????????也是用來釋放資源的,但是只有在VC被釋放的時候才會調用


技術總結點:

1.第一次訪問UIViewController的view時,view為nil,然后就會調用loadView方法創(chuàng)建view

2.view創(chuàng)建完畢后會調用viewDidLoad方法進行界面元素的初始化

3.當內存警告時,系統(tǒng)可能會釋放UIViewController的view,將view賦值為nil,并且調用viewDidUnload方法

4.當再次訪問UIViewController的view時,view已經在3中被賦值為nil,所以又會調用loadView方法重新創(chuàng)建view

5.view被重新創(chuàng)建完畢后,還是會調用viewDidLoad方法進行界面元素的初始化,就是這么一個循環(huán)關系

6.dealloc只有在VC被釋放的時候調用,如果VC中存在對象未被釋放,將不走這個方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 7、不使用IB是,下面這樣做有什么問題? 6、請說說Layer和View的關系,以及你是如何使用它們的。 1.首先...
    AlanGe閱讀 990評論 0 1
  • 27、ViewController的didReceiveMemoryWarning是在什么時候調用的?默認的操作是...
    煙雨平生花飛舞閱讀 693評論 0 1
  • 1.OC里用到集合類是什么? 基本類型為:NSArray,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,478評論 0 3
  • 172.簡述視圖控制器的生命周期。 1)init函數(init;initWithFrame;initWithCod...
    AlanGe閱讀 464評論 0 0
  • 一、loadView 1.什么時候被調用? 每次訪問UIViewController的view(比如control...
    對酒當歌_人生幾何閱讀 362評論 0 0

友情鏈接更多精彩內容