iOS 生命週期

2021-07-28 20:58:22 字數 1817 閱讀 4383

在init方法中例項化必要的物件(遵從lazyload思想)

‍init方法中初始化viewcontroller本身

當view需要被展示而它卻是nil時,viewcontroller會呼叫該方法。不要直接呼叫該方法。

如果手工維護views,必須過載重寫該方法

如果使用ib維護views,必須不能過載重寫該方法

loadview和ib構建view

過載重寫該方法以進一步定製view

在iphone os 3.0及之後的版本中,還應該過載重寫viewdidunload來釋放對view的任何索引

viewdidload後呼叫資料model

當系統記憶體吃緊的時候會呼叫該方法(注:viewcontroller沒有被dealloc)

記憶體吃緊時,在iphone os 3.0之前didreceivememorywarning是釋放無用記憶體的唯一方式,但是os 3.0及以後viewdidunload方法是更好的方式

在該方法中將所有iboutlet(無論是property還是例項變數)置為nil(系統release view時已經將其release掉了)

在該方法中釋放其他與view有關的物件、其他在執行時建立(但非系統必須)的物件、在viewdidload中被建立的物件、快取資料等 release物件後,將物件置為nil(iboutlet只需要將其置為nil,系統release view時已經將其release掉了)

一般認為viewdidunload是viewdidload的映象,因為當view被重新請求時,viewdidload還會重新被執行

viewdidunload中被release的物件必須是很容易被重新建立的物件(比如在viewdidload或其他方法中建立的物件),不要release使用者資料或其他很難被重新建立的物件

viewdidload總是在loadview之後呼叫,不管你是不是通過nib檔案建立的,這個方法總是會被呼叫的。

viewdidunload在收到記憶體警告的時候呼叫,在我的理解,這個方法裡面應該做幾件事情:

1、釋放掉一些比較容易建立的物件,或者是一些比較佔資源的物件(、音訊等)

2、如果介面控制項自己保持了引用計數,這裡也要釋放掉。(比如說,這個控制項被設成了屬性,而且是retain的,這個retain的引用計數就必須釋放掉)

3、如果跨類的引數傳遞機制會在viewdidunload以後產生不正常的效果,這裡也必須處理。

viewdidunload和dealloc方法沒有關聯,dealloc還是繼續做它該做的事情

在使用過程中,我對viewdidunload 和dealloc方法有所混淆,現記錄筆記如下:

dealloc負責realease 所有的 retain,copy形式的@proprety屬性,而相應的本地臨時變數,則全部在viewdidunload中進行realease

viewdidunload將所有的區域性變數和 retain,copy形式的@property先置為nil,後realease,

viewdidunload將所有的 retain,copy形式的@property 置為nil,

*置為nil的實際操作如下,這裡的newobject即為我們的nil,backbutton為我們的@property

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

我們可以重寫這個方法,對已經消失,或者被覆蓋,或者已經隱藏了的檢視做一些其他操作。

IOS生命週期

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

iOS 生命週期

物件的生命週期一直是開發者所需要關心的,教授 cs193p 的老師 paul 也詳細的講述了 uiviewcontroller 的生命週期。為了記述這一過程,故作此文。由於 xcode 提供了純 和 storyboard xib 同理 兩種布局 ui 的方式,因此初始化部分略有不同。為了方便觀察,我...

iOS 程式生命週期

狀態名解釋 not running 應用還沒啟動或者應用發生中斷 inactive 應用正在前台執行 不接收事件 active 應用正在前台執行 接收事件 background 應用處於後台執行 程式在後台而且能執行 大多數程式進入這個狀態後會在在這個狀態上停留一會。時間到之後會進入掛起狀態 sus...