自述
AppDelegate和ViewController的生命周期是iOS編程中一個(gè)重要的知識(shí)點(diǎn)庆揩。它們貫穿了程序的整個(gè)生命周期,在其中包含了很多方法,在編程的過(guò)程中订晌,我們會(huì)根據(jù)不同的情況在這些方法中實(shí)現(xiàn)不同的功能虏辫。
AppDelegate的生命周期
在創(chuàng)建一個(gè)iOS工程后,會(huì)自動(dòng)創(chuàng)建一個(gè)AppDelegate.swift文件锈拨,文件中聲明了一個(gè)AppDelegate類(lèi)砌庄,它繼承了UIResponder類(lèi),并且遵守了UIApplicationDelegate協(xié)議推励。在這個(gè)類(lèi)中實(shí)現(xiàn)了一系列的UIApplicationDelegate的協(xié)議方法鹤耍。下面對(duì)AppDelegate生命周期中其中常用的方法進(jìn)行一些介紹:
-
程序啟動(dòng)成功后會(huì)自動(dòng)調(diào)用的方法
這個(gè)方法是iOS程序真正的入口,iOS編程實(shí)質(zhì)就是在實(shí)現(xiàn)這個(gè)方法:func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { //搭建UI界面验辞,請(qǐng)求數(shù)據(jù)稿黄、展示數(shù)據(jù) print("程序啟動(dòng)成功") return true }
-
應(yīng)用程序?qū)⒁兂煞腔钴S狀態(tài)的時(shí)候會(huì)自動(dòng)調(diào)用的方法
應(yīng)用程序不顯示在手機(jī)屏幕上的時(shí)候就是非活躍狀態(tài),按home鍵讓程序在后臺(tái)運(yùn)行跌造、來(lái)電可以將應(yīng)用程序變成非活躍狀態(tài)杆怕。func applicationWillResignActive(application: UIApplication) { //一般在這個(gè)方法中關(guān)閉定時(shí)器、暫停視頻/音頻的方法壳贪、讓游戲暫停陵珍。。违施。 print("已經(jīng)進(jìn)入后臺(tái)") }
-
應(yīng)用程序已經(jīng)進(jìn)入后臺(tái)的時(shí)候會(huì)調(diào)用的方法
在應(yīng)用程序打開(kāi)的時(shí)候按home鍵才會(huì)進(jìn)入后臺(tái)func applicationDidEnterBackground(application: UIApplication) { //一般在這個(gè)方法中關(guān)閉定時(shí)器互纯、暫停視頻/音頻的方法、讓游戲暫停磕蒲。留潦。。 print("已經(jīng)進(jìn)入后臺(tái)") }
-
應(yīng)用程序?qū)⒁M(jìn)入前臺(tái)的時(shí)候自動(dòng)調(diào)用的方法
從后臺(tái)打開(kāi)應(yīng)用程序的時(shí)候才算進(jìn)入前臺(tái)func applicationWillEnterForeground(application: UIApplication) { //根據(jù)情況去開(kāi)啟定時(shí)器辣往、繼續(xù)播放視頻/音頻兔院、繼續(xù)游戲。站削。坊萝。。 print("將要進(jìn)入前臺(tái)") }
-
應(yīng)用程序已經(jīng)變成活躍狀態(tài)的時(shí)候會(huì)調(diào)用的方法
從后臺(tái)回到前臺(tái)许起、來(lái)電打斷結(jié)束(掛機(jī))就會(huì)從非活躍狀態(tài)變成活躍狀態(tài)十偶。func applicationDidBecomeActive(application: UIApplication) { //根據(jù)情況去開(kāi)啟定時(shí)器、繼續(xù)播放視頻/音頻园细、繼續(xù)游戲扯键。。珊肃。。 print("已經(jīng)變成活躍狀態(tài)") }
-
應(yīng)用程序?qū)⒁K止的時(shí)候會(huì)調(diào)用的方法
一般情況下,只有從后臺(tái)強(qiáng)制將應(yīng)用程序退出的時(shí)候伦乔,程序才會(huì)終止厉亏。func applicationWillTerminate(application: UIApplication) { //讓?xiě)?yīng)用程序不能后臺(tái)運(yùn)行:在info.plist文件中加添key為"Application does not run in background",值為YES的鍵值對(duì) print("程序?qū)⒁K止") }
-
應(yīng)用程序接收到內(nèi)存警告的時(shí)候會(huì)自動(dòng)調(diào)用的方法
func applicationDidReceiveMemoryWarning(application: UIApplication){ //銷(xiāo)毀一些不必要的內(nèi)存烈和。一般在這兒去釋放一些緩存數(shù)據(jù) print("接收到內(nèi)存警告") }
?ViewController的生命周期
ViewController也稱(chēng)視圖控制器爱只,在ios中ViewController如果按照結(jié)構(gòu)分類(lèi)可以分為兩類(lèi):
1、一種是用于為用戶展示內(nèi)容招刹,同時(shí)可以和用戶進(jìn)行交互恬试,如UITableViewController、UIViewController.
2疯暑、另一種是用于控制和顯示其它的視圖控制器训柴,這種視圖控制器一般都是一個(gè)視圖控制器的容器,如UINavigationController.
ViewController的生命周期指的是視圖控制器下的view視圖的生命周期妇拯。視圖控制器本身并不能顯示任何東西幻馁,能夠顯示的是視圖控制器下的view視圖。
一個(gè)對(duì)象的生命周期的就是從創(chuàng)建到消亡的整個(gè)過(guò)程就是它的生命周期越锈。
ViewController生命周期如圖所示:
下面介紹一下ViewController生命周期中的方法進(jìn)行一些簡(jiǎn)單的介紹
- viewDidLoad方法
這個(gè)方法是視圖控制器中View加載成功后會(huì)調(diào)用的方法,在viewDidLoad中最適合創(chuàng)建一些附加的view和控件仗嗦。
//viewDidLoad方法
override func viewDidLoad() {
super.viewDidLoad()
}
- viewWillApper方法
這個(gè)方法是視圖控制器中view視圖即將添加到窗口(顯示在界面上)時(shí)調(diào)用。在這個(gè)方法中可以進(jìn)行一些顯示前的處理甘凭,如:彈出鍵盤(pán)稀拐、添加特殊的出場(chǎng)動(dòng)畫(huà)等。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
}
- viewDidApper方法
這個(gè)方法是view已經(jīng)顯示在界面上的時(shí)候會(huì)自動(dòng)調(diào)用丹弱。如果在顯示結(jié)束后還需要添加一些操作德撬,可以在這個(gè)方法中進(jìn)行添加。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
}
- viewWillDisapper方法
這個(gè)方法是在view視圖即將消失蹈矮、被覆蓋或者是被隱藏的時(shí)候調(diào)用
override func viewWillDisappear(animated: Bool) {
super.viewWillAppear(animated)
}
- viewDidDisappear方法
這個(gè)方法是在view視圖已經(jīng)消失砰逻、被覆蓋、被隱藏的時(shí)候調(diào)用
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
}
- viewWillUnload方法
這個(gè)方法是在內(nèi)存過(guò)低的時(shí)候泛鸟,需要釋放一些不需要使用的視圖時(shí)蝠咆,即將釋放視圖的時(shí)候調(diào)用
override func viewWillUnload() {
}
- viewDidUnload方法
這個(gè)方法是已經(jīng)釋放視圖結(jié)束后調(diào)用,在調(diào)用這個(gè)方法的時(shí)候視圖控制器中的view已經(jīng)是nil了北滥,由于這一般發(fā)生在內(nèi)存警告的時(shí)候刚操,所以應(yīng)該將那些不在顯示的view釋放。
override func viewDidUnload() {
}
最后
介紹就到這里再芋,最后在給大家說(shuō)一句菊霜,在面試中,面試官有時(shí)會(huì)問(wèn)到這些問(wèn)題济赎,希望對(duì)大家有所幫助O(∩_∩)O~