UIViewController生命週期

2021-06-08 18:23:16 字數 1404 閱讀 9129

**:

uiviewcontrol是ios程式中的乙個重要組成部分,扮演者乙個大管家的身份,管理著程式中的眾多檢視,今天看看了官方文件並做了如下一些簡單的記錄:

何時載入view,載入的原則是什麼,檢視何時消失等問題,文件中講的都很詳細。

controller的view最好在需要顯示時再去載入,並且在系統發出記憶體警告時釋放比必要的view及相關的資料物件。

一、uiviewcontroller的初始化

初始化時會根據需要呼叫init,initwithcoder等相關函式,這個時候我們可以做一下簡單的初始化操作,建立viewcontroller中需要使用的資料模型等,不建議在初始化階段就直接建立view及其他與顯示有關的物件(應該放到loadview的時候去建立,或者採用懶載入的方法建立)。

我們都知道viewcontroller可以通過**和xib兩種方式建立,這兩種方式的初始化流程也不盡相同。

1)使用xib建立的vc

xib其實最終是會把我們的設定儲存成乙個資料集,當需要初始化構建vc的時候,回去讀取記錄的資料集,然後幫我們動態的建立vc,因此可以想象它在初始化時會先去找看是否實現initwithcoder方法,如果該類實現了該方法,就直接呼叫initwithcoder方法建立物件,如果沒有實現的話就呼叫init方法。呼叫完初始化方法以後緊接著會呼叫awakefromnib方法,在這個方法裡面我們可以做進一步的初始化操作。

2)使用**建立vc

使用**建立時,我們根據需要手動的建立vc中的資料,如果自己定製vc時,還需要在init中呼叫[super init]。

二、uiviewcontroller中view的load和unload

前面講了不建議在vc初始化的時候就建立view及其他與顯示相關的**,官方文件建議將view的初始化操作放到loadview的時候再做,當vc接到記憶體告警時會呼叫didrecievememorywarning這個時候我們就要做出響應,釋放暫時不需要的物件。如果無視這個警告,系統記憶體不夠用時會會繼續傳送,如果還得不到處理就會強制退出程式。下面看具體的loadview和unloadview時候都會做什麼操作。

1)load週期

當需要顯示或者訪問view屬性時,view沒有建立的話,vc就會呼叫loadview方法,在這個時候會建立乙個view並將其賦給vc.view屬性。緊接著就會呼叫vc的viewdidload方法,這個時候vc.view保證是有值的,可以做進一步的初始化操作,例如新增一些subview。注意:定製vc時,如果覆蓋loadview方法,不需要呼叫[super loadview]方法。

2)unload週期

uiviewcontroller的生命週期

uiviewcontroller是ios程式中的乙個重要組成部分,扮演者乙個大管家的身份,管理著程式中的眾多檢視 何時載入view,載入的原則是什麼,檢視何時消失等問題,文件中講的都很詳細。controller的view最好在需要顯示時再去載入,並且在系統發出記憶體警告時釋放不必要的view及相關的...

UIViewController的生命週期

uiviewcontroller的生命週期 1.uiviewcontroller uiviewcontroller是ios頂層檢視的載體及控制器,使用者與程式介面的互動都是由uiviewcontroller來控制的 uiviewcontroller管理uiview的生命週期及資源的載入與釋放 uiv...

UIViewController的生命週期

關於viewdidunload 在發生記憶體警告的時候如果本檢視不是當前螢幕上正在顯示的檢視的話,viewdidunload將會被執行,本檢視的所有子檢視將被銷毀,以釋放記憶體,此時開發者需要手動對viewload viewdidload中建立的物件釋放記憶體。因為當這個檢視再次顯示在螢幕上的時候,...