視圖是應(yīng)用的一個重要的組成部份,功能的實現(xiàn)與其息息相關(guān),而視圖控制器控制著視圖,其重要性在整個應(yīng)用中不言而喻。所以視圖是iOS開發(fā)入門學(xué)習(xí)的必學(xué)內(nèi)容。
以視圖的四種狀態(tài)為基礎(chǔ),我們來系統(tǒng)了解一下視圖控制器的生命周期。
在視圖不同的生命周期中,視圖控制器會回調(diào)不同的方法,具體如圖:
在視圖控制器已被實例化,視圖被加載到內(nèi)存中時,會調(diào)用viewDidLoad方法,這時視圖并未出現(xiàn)。
在該方法中,通常會對所控制的視圖進(jìn)行初始化處理。
視圖可見前后會調(diào)用viewWillAppear:方法和viewDidAppear:方法,視圖不可見前后會調(diào)用viewWillDisappear:方法和viewDidDisappear:方法。
這四個方法調(diào)用父類相應(yīng)的方法以實現(xiàn)其功能,編碼時調(diào)用父類方法的位置可根據(jù)實際情況做以調(diào)整,例如:
1 override func viewWillAppear(animated: Bool) {2 super.viewWilllAppear(animated)3 }
viewDidLoad方法在應(yīng)用運(yùn)行的時候只調(diào)用一次,而上述這四個方法可以被反復(fù)調(diào)用多次,它們的使用很廣泛,但同時也具有很強(qiáng)的技巧性。
例如,有的應(yīng)用會使用重力加速計,重力加速計會不斷輪詢設(shè)備以實時獲得設(shè)備在z軸、x軸和y軸方向的重力加速度。
不斷的輪詢必然會耗費(fèi)大量電能進(jìn)而影響電池使用壽命,我們通過利用這四個方法適時地打開或者關(guān)閉重力加速計來達(dá)到節(jié)約電能的目的。
怎么使用這四個方法才能做到“適時”是一個值得思考的問題。
在低內(nèi)存的情況下,iOS會調(diào)用didReceiveMemoryWarning和viewDidUnLoad方法。
在iOS 6之后,就不再適用viewDidUnLoad方法,而僅支持didReceiveMemoryWarning方法。
didReceiveMemoryWarning方法的主要職能是釋放內(nèi)存,包括視圖控制器中的一些成員變量和視圖的釋放。例如:
1 override func didReceiveMemoryWarning() {2 super.didReceiveMemoryWarning()3 }
除了上述六個方法外,還有很多其他方法,隨著學(xué)習(xí)深入,咱們再慢慢研究吧。
文章來自:博客園/張董