iOS中應(yīng)用和視圖的生命周期
一. 應(yīng)用的生命周期
在寫前面
在iOS中钾麸,AppDelegate是應(yīng)用程序的委托對(duì)象更振,它繼承了UIResponder類,并實(shí)現(xiàn)了UIApplicationDelegate協(xié)議饭尝。UIResponder類可以使子類AppDelegate能夠成為應(yīng)用程序委托對(duì)象肯腕,這種對(duì)象能夠響應(yīng)應(yīng)用程序的生命周期。在應(yīng)用狀態(tài)躍遷過程中钥平,IOS系統(tǒng)會(huì)回調(diào)AppDelegate中的一些方法实撒,并且發(fā)送一些通知姊途。下面列出幾個(gè)主要的方法和通知。</li>
階段一
調(diào)用方法:application:didFinishLaunchingWithOptions:
發(fā)出通知:UIApplicationDidFinishLaunchingNotification知态,應(yīng)用啟動(dòng)并進(jìn)行初始化時(shí)會(huì)調(diào)用該方法并發(fā)出通知捷兰。這個(gè)階段會(huì)實(shí)例化根視圖控制器。
階段二
調(diào)用方法:applicationDidBecomeActive:
發(fā)出通知:UIApplicationDidBecomeActiveNotification负敏,應(yīng)用進(jìn)入前臺(tái)并處于活動(dòng)狀態(tài)時(shí)調(diào)用該方法并發(fā)出通知贡茅。這個(gè)階段可以恢復(fù)UI的狀態(tài)。
階段三
調(diào)用方法:applicationWillResignActive:
發(fā)出通知:UIApplicationWillResignActiveNotification其做,應(yīng)用從活動(dòng)狀態(tài)進(jìn)入到非活動(dòng)狀態(tài)時(shí)調(diào)用該方法并發(fā)出通知顶考。這個(gè)階段可以保存UI的狀態(tài)。
階段四
調(diào)用方法: - applicationDidEnterBackground:
發(fā)出通知:UIApplicationDidEnterBackgroundNotification妖泄,應(yīng)用進(jìn)入后臺(tái)時(shí)調(diào)用該方法并發(fā)出通知驹沿。這個(gè)階段可以保存用戶數(shù)據(jù),釋放一些資源蹈胡。
階段五
調(diào)用方法: applicationWillEnterForeground:
發(fā)出通知:UIApplicationWillEnterForegroundNotification渊季,應(yīng)用進(jìn)入前臺(tái),但是還沒有處于活動(dòng)狀態(tài)時(shí)調(diào)用該方法并發(fā)出通知罚渐。這個(gè)階段可以恢復(fù)用戶數(shù)據(jù)却汉。
階段六
調(diào)用方法: applicationWillTerminate:
發(fā)出通知: UIApplicationWillTerminateNotification,應(yīng)用被終止時(shí)調(diào)用該方法并發(fā)出通知搅轿,但內(nèi)存清除時(shí)除外。這個(gè)階段釋放一些資源富玷,也可以保存用戶數(shù)據(jù)璧坟。
二. 視圖的生命周期
在寫前面
視圖是應(yīng)用的一個(gè)重要組成部分,功能的實(shí)現(xiàn)與其息息相關(guān)赎懦,而視圖控制器控制著視圖雀鹃,其重要性在整個(gè)應(yīng)用中不言而喻.
下面具體了解下視圖生命周期與視圖控制器的關(guān)系。以視圖的四種狀態(tài)(視圖創(chuàng)建励两、視圖可見黎茎、視圖不可見、系統(tǒng)低內(nèi)存)為基礎(chǔ)当悔,在視圖不同的生命周期中傅瞻,視圖控制器會(huì)回調(diào)不同的方法,具體如下盲憎。
一. 視圖創(chuàng)建
- 在視圖控制器已被實(shí)例化嗅骄,視圖被加載到內(nèi)存中時(shí)調(diào)用viewDidLoad方法,此時(shí)視圖并未出現(xiàn)饼疙。在該方法中溺森,通常進(jìn)行的是對(duì)所控制的視圖進(jìn)行初始化處理。
二. 視圖可見、視圖不可見
-
視圖可見前后會(huì)調(diào)用viewWillAppear:方法和viewDidAppear:方法屏积;視圖不可見前后會(huì)調(diào)用viewWillDisappear:方法和viewDidDisappear:方法医窿。
注意:viewDidLoad方法在應(yīng)用運(yùn)行時(shí)只調(diào)用一次,而上述四個(gè)方法可以被反復(fù)調(diào)用炊林。
三. 系統(tǒng)低內(nèi)存
- 在低內(nèi)存情況下姥卢,iOS會(huì)調(diào)用didReceiveMemoryWarning和viewDidUnload方法。在iOS6之后铛铁,就不再使用viewDidUnload隔显,而僅支持didReceiveMemoryWarning。didReceiveMemoryWarning方法主要作用是釋放內(nèi)存饵逐,包括視圖控制器中的一些成員變量和視圖的釋放括眠。