個(gè)人總結(jié)--AppDelegate和ViewController的生命周期

程序猿.jpg

自述

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生命周期.png

下面介紹一下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~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鉴逞,一起剝皮案震驚了整個(gè)濱河市记某,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌构捡,老刑警劉巖液南,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異勾徽,居然都是意外死亡滑凉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)喘帚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)畅姊,“玉大人,你說(shuō)我怎么就攤上這事吹由∪粑矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵溉知,是天一觀的道長(zhǎng)陨瘩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)级乍,這世上最難降的妖魔是什么舌劳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮玫荣,結(jié)果婚禮上甚淡,老公的妹妹穿的比我還像新娘。我一直安慰自己捅厂,他們只是感情好贯卦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著焙贷,像睡著了一般撵割。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辙芍,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天啡彬,我揣著相機(jī)與錄音,去河邊找鬼故硅。 笑死庶灿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吃衅。 我是一名探鬼主播往踢,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼徘层!你這毒婦竟也來(lái)了峻呕?” 一聲冷哼從身側(cè)響起利职,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎山上,沒(méi)想到半個(gè)月后眼耀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佩憾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了干花。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妄帘。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖池凄,靈堂內(nèi)的尸體忽然破棺而出抡驼,到底是詐尸還是另有隱情,我是刑警寧澤肿仑,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布致盟,位于F島的核電站,受9級(jí)特大地震影響尤慰,放射性物質(zhì)發(fā)生泄漏馏锡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一伟端、第九天 我趴在偏房一處隱蔽的房頂上張望杯道。 院中可真熱鬧,春花似錦责蝠、人聲如沸党巾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)齿拂。三九已至,卻和暖如春肴敛,著一層夾襖步出監(jiān)牢的瞬間署海,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工值朋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叹侄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓昨登,卻偏偏與公主長(zhǎng)得像趾代,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丰辣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容