ViewController生命周期

一、 ARC環(huán)境

單個viewController的生命周期

initWithCoder:(NSCoder *)aDecoder:(如果使用storyboard或者xib)

loadView:加載view

viewDidLoad:view加載完畢

viewWillAppear:控制器的view將要顯示

viewWillLayoutSubviews:控制器的view將要布局子控件

viewDidLayoutSubviews:控制器的view布局子控件完成

這期間系統(tǒng)可能會多次調用viewWillLayoutSubviews 、 viewDidLayoutSubviews 倆個方法

viewDidAppear:控制器的view完全顯示

viewWillDisappear:控制器的view即將消失的時候

這期間系統(tǒng)也會調用viewWillLayoutSubviews 、viewDidLayoutSubviews 兩個方法

viewDidDisappear:控制器的view完全消失的時候

多個viewControllers跳轉

當我們點擊push的時候首先會加載下一個界面然后才會調用界面的消失方法

initWithCoder:(NSCoder *)aDecoder:ViewController2(如果用xib創(chuàng)建的情況下)

loadView:ViewController2

viewDidLoad:ViewController2

viewWillDisappear:ViewController1將要消失

viewWillAppear:ViewController2將要出現

viewWillLayoutSubviewsViewController2

viewDidLayoutSubviewsViewController2

viewWillLayoutSubviews:ViewController1

viewDidLayoutSubviews:ViewController1

viewDidDisappear:ViewController1完全消失

viewDidAppear:ViewController2完全出現

小結:

-整個控制器生命周期: viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappear

二、非ARC環(huán)境下

didReceiveMemoryWarning:

當app收到內存警告的時候會發(fā)消息給視圖控制器。

app從來不會直接調用這個方法,而是當系統(tǒng)確定可用內存不足的時候采取調用。

如果你想覆寫這個方法來釋放一些控制器使用的額外內存,你應該在你的實現方法中調用父類的實現方法。

viewWillUnload:(iOS6廢除)

當消除掉控制器的視圖之前調用

視圖不會再在低內存條件下被清除所以這個方法不會再被調用。

在iOS5之前,當低的內存情況發(fā)生的時候,當前控制器的視圖們不再被需要的時候,系統(tǒng)會有選擇性的將這些視圖從這些內存移除。這個方法被調用的目的是在視圖被真正的銷毀前你可以執(zhí)行一些清空的任務。比如,你想要使用這個方法去清空視圖的觀察者或通知或者記錄視圖的狀態(tài)以便當重新讀取的時候恢復。

在iOS6之后,不再需要清空視圖的引用。因此,其他一些關于清理的方法,比如清空觀察者,也不是必要的了。

viewDidUnload:(iOS6廢除)

當視圖從內存中被消除后調用

視圖在地的內存情況下不再被銷毀所以這個方法也不再會調用

在iOS5之前,地的內存狀況發(fā)生之后,當前的試圖控制器的視圖不再被需要,系統(tǒng)會選擇性的在視圖控制器的視圖被銷毀后調用。這個方法使你執(zhí)行一些最后清空任務的最后機會如果你的視圖控制器存儲著對視圖的或子控件的單獨引用,你應該使用這個方法去釋放這些引用。你也可以使用這個方法去消除一些你再創(chuàng)建視圖時候所創(chuàng)建的但是當視圖不再的時候不再需要的關于對象的引用。你不應該使用這個方法去釋放用戶數據或者一些不能輕易被重新創(chuàng)建的數據。

在iOS6之后,清空在試圖控制器中對views和其他對象的引用已經沒有必要了。

當這個方法被調用的時候,視圖的屬性是空的。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容