天天看點

iOS篇——視圖生命周期與視圖控制器關系

藍鷗iOS教育訓練推薦:視圖在iOS中是一個很重要的部分,功能和實作之間有着緊密聯系,那麼對于視圖控制器來說它控制着視圖,是以也就是非常重要的了。

以視圖的4種狀态為基礎,來大緻的了解一下視圖控制器的生命周期。在視圖不同的生命周期中,視圖控制器會回調不一樣的方法,如圖:

iOS篇——視圖生命周期與視圖控制器關系

視圖控制器的一些主要方法

在視圖控制器已被執行個體化,視圖被加載到記憶體中時調用viewDidLoad方法,這個時候視圖還沒有出現。在這個方法中,一般情況下要進行的是對所控制的視圖進行初始化處理。

視圖可見前後會調用viewWillAppear:方法和viewDidAppear:方法;視圖不可見前後會調用

viewWillDisappear:方法和viewDidDisappear:方法。4個方法調用父類相應的方法以實作其功能,編碼時該方法的位置可根據實際情況做以調整,可以看下下面代碼:

iOS篇——視圖生命周期與視圖控制器關系

viewDidLoad方法在應用運作的時候隻調用一次,而這上述4個方法可以被反複調用多次,它們的使用很廣泛但同時也具有很強的技巧性。例如,有的應用會使用重力加速計,重力加速計會不斷輪詢裝置以實時獲得裝置在z軸、x軸和y軸方向的重力加速度。不斷的輪詢必然會耗費大量電能進而影響電池使用壽命,我們通過利用這4個方法适時地打開或者關閉重力加速計來達到節約電能的目的。怎麼使用這4個方法才能做到“适時”是一個值得思考的問題。

一般在低記憶體情況下,iOS會調用didReceiveMemoryWarning:和viewDidUnload:方法。在iOS 6之後,就不再使用viewDidUnload:,而僅支援didReceiveMemoryWarning:。didReceiveMemoryWarning:方法的主要職能是釋放記憶體,包括視圖控制器中的一些成員變量和視圖的釋放。