国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

iOS的應(yīng)用生命周期以及應(yīng)用界面

這篇具有很好參考價(jià)值的文章主要介紹了iOS的應(yīng)用生命周期以及應(yīng)用界面。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在iOS的原生開發(fā)中,我們需要特別關(guān)注兩個(gè)東西:AppDelegate和ViewController。我們主要的編碼工作就是在AppDelegate和ViewControlle這兩個(gè)類中進(jìn)行的。它們的類圖如下圖所示:
iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macosAppDelegate是應(yīng)用程序委托對象,它繼承了UIResponder類,并實(shí)現(xiàn)了UIApplicationDelegate委托協(xié)議。UIResponder類可以使子類AppDelegate具有處理響應(yīng)事件的能力,而UIApplicationDelegate委托協(xié)議使AppDelegate能夠成為應(yīng)用程序委托對象,這種對象能夠響應(yīng)應(yīng)用程序的生命周期,該類中繼承的一系列方法在應(yīng)用生命周期的不同階段會被回調(diào)。相應(yīng)的,AppDelegate的子類也可以實(shí)現(xiàn)這兩個(gè)功能。
ViewController類繼承自UIViewController類,它是視圖控制器類,在工程中扮演者根視圖和用戶事件控制類的角色。

應(yīng)用程序生命周期

作為應(yīng)用程序的委托對象,AppDelegate類在應(yīng)用程序生命周期的不同階段會回調(diào)不同的方法。首先,讓我們先了解iOS應(yīng)用的不同狀態(tài)及其彼此間的關(guān)系。
iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos

  • Not running(非運(yùn)行狀態(tài))。應(yīng)用沒有運(yùn)行或被系統(tǒng)終止。
  • Inactive(前臺非活動(dòng)狀態(tài))。應(yīng)用正在進(jìn)入前臺狀態(tài),但是還不能接受事件處理。
  • Active(前臺活動(dòng)狀態(tài))。應(yīng)用進(jìn)入前臺狀態(tài),能接受事件處理。
  • Background(后臺狀態(tài))。應(yīng)用進(jìn)入后臺后,依然能夠執(zhí)行代碼。如果有可執(zhí)行的代碼,就會執(zhí)行代碼,如果沒有可執(zhí)行的代碼或者將可執(zhí)行的代碼執(zhí)行完畢,應(yīng)用會馬上進(jìn)入掛起狀態(tài)。
  • Suspended(掛起狀態(tài))。被掛起的應(yīng)用進(jìn)入一種“冷凍”狀態(tài),不能執(zhí)行代碼。如果系統(tǒng)內(nèi)存不夠,應(yīng)用會被終止。

在應(yīng)用狀態(tài)躍遷的過程中,iOS系統(tǒng)會回調(diào)AppDelegate中的一些方法,并且發(fā)送一些通知。實(shí)際上,在應(yīng)用的生命周期中用到的方法和通知很多,我們選取幾個(gè)主要的方法和通知進(jìn)行纖細(xì)介紹。

iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos

為了讓大家更直觀地了解各狀態(tài)與其相應(yīng)地方法、通知間地關(guān)系,下面我們以幾個(gè)應(yīng)用場景為切入點(diǎn)進(jìn)行系統(tǒng)分析。

非運(yùn)行狀態(tài)——應(yīng)用啟動(dòng)場景

iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos

點(diǎn)擊Home鍵——應(yīng)用退出場景

iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos
iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos
iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos
iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos

輕按兩下Home鍵可以快速進(jìn)入iOS(iOS9及其后續(xù)版本)多任務(wù)欄,此時(shí)可以看到處于后臺運(yùn)行或掛起狀態(tài)地應(yīng)用,也可能有處于終止?fàn)顟B(tài)地應(yīng)用。向上滑動(dòng)應(yīng)用界面,可以刪除這些應(yīng)用并釋放內(nèi)存。

掛起重新運(yùn)行場景

iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos

內(nèi)存清除:應(yīng)用終止場景

iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos

應(yīng)用界面

蘋果應(yīng)用程序的界面幾乎都是由Cocoa和Cocoa Touch框架中地類和協(xié)議等元素構(gòu)建的,這些元素通過mvc模式有效地組織起來。
macOS應(yīng)用的界面主要使用Cocoa框架開發(fā),Cocoa是一種為應(yīng)用程序提供豐富用戶體驗(yàn)的框架,其核心是:Foundation和AppKit框架。iOS應(yīng)用界面主要使用Cocoa Touch框架開發(fā),核心是:foundation和UIKit框架。Cocoa Touch框架有一套自己的MVC模式,其中視圖和控制器是UIKit中的UIView(及其子類)和UIViewController(及其子類)。

視圖的生命周期

在應(yīng)用運(yùn)行過程中視圖會顯示不同的狀態(tài),這就是視圖的生命周期。視圖生命周期的不同階段會回調(diào)視圖控制器的不同方法。
iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos
視圖創(chuàng)建并加載到內(nèi)存中時(shí),會調(diào)用viewDidLoad方法,這時(shí)視圖并未出現(xiàn)。該方法中通常會對所控制的視圖進(jìn)行初始化處理。
視圖可見前后會調(diào)用:viewWillAppear和viewDidAppear方法,視圖不可見前后會調(diào)用viewWillDisappear和viewDidDisappear方法。這4個(gè)方法調(diào)用父類相應(yīng)的方法以實(shí)現(xiàn)其功能,編碼時(shí)調(diào)用父類方法的位置可根據(jù)實(shí)際情況做調(diào)整。
viewDidLoad方法在應(yīng)用運(yùn)行的時(shí)候只調(diào)用一次,二上述4個(gè)方法可以被反復(fù)調(diào)用多次。

視圖

在Cocoa Touch框架中,提供了視圖的“根”類——UIView。
從繼承關(guān)系上看,UIView是所有視圖的“根”。
iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos
其中,比較特殊的類是UIControl類,該類是控制類,它及其子類都能響應(yīng)一些高級事件(可以通過xcode中的sent events欄來查看控件是否有高級事件)。,除此之外的類都無法響應(yīng)高級事件。事實(shí)上,視圖也可以響應(yīng)事件,但是這些事件比較低級,需要開發(fā)人員自己處理。很多手勢的開發(fā)都以這些低級事件為基礎(chǔ)。

  • 視圖分類

    1. 控件。繼承UIControl類,能夠響應(yīng)用戶高級事件。
    2. 窗口。UIWindow對象。一個(gè)iOS應(yīng)用只有一個(gè)UIWindow對象(這點(diǎn)和Android就有很大的區(qū)別了,Android是一個(gè)activity就持有一個(gè)window對象,換句話說一個(gè)Android應(yīng)用是有多個(gè)window對象的),它是所有子視圖的“根”容器(這點(diǎn)就和Android一致)。
    3. 容器視圖。包括UIScrollView、UIToolbar及它們的子類。
    4. 顯示視圖。UIImageView、UILabel等。
    5. 文本和web視圖。
    6. 導(dǎo)航視圖。為用戶提供從一個(gè)屏幕到另一個(gè)屏幕的導(dǎo)航(或跳轉(zhuǎn))視圖,包括UITabBar和UINavigationBar。
    7. 警告框和操作表。用于給用戶提供一種反饋或者與用戶進(jìn)行交互。
  • 應(yīng)用界面構(gòu)建層次
    iOS應(yīng)用界面是由若干個(gè)視圖構(gòu)建而成的,這些視圖對象采用樹形構(gòu)建。下圖是一個(gè)應(yīng)用界面的構(gòu)建層次圖,該應(yīng)用有一個(gè)UIWindow,其中包含一個(gè)UIView根視圖。根視圖下又有3個(gè)子視圖——Button1、Label2和UIView(View2),其中子視圖UIView(View2)中存在一個(gè)按鈕Button3。
    一般情況下,應(yīng)用中只包含一個(gè)UIWindow。從UI構(gòu)建層次上講,UIWindow包含一個(gè)根視圖UIView。根視圖一般也只有一個(gè),放于UIWindow中。根視圖的類型決定了應(yīng)用程序的類型。
    iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos
    應(yīng)用界面的構(gòu)建層次是一種樹形結(jié)構(gòu),“樹根”是Window,RootView根視圖是“樹干”,其他視圖對象為“樹冠”。在層次結(jié)構(gòu)中,上下兩個(gè)視圖是“父子關(guān)系”。除了Window,每個(gè)視圖的父視圖有且只有一個(gè),子視圖可以有多個(gè)。它們間的關(guān)系涉及3個(gè)屬性。

  • superview。獲得父視圖對象。

  • subviews。獲得子視圖對象集合。

  • window。獲得視圖所在的界面Window對象。
    iOS的應(yīng)用生命周期以及應(yīng)用界面,IOS,ios,cocoa,macos文章來源地址http://www.zghlxwxcb.cn/news/detail-729858.html

到了這里,關(guān)于iOS的應(yīng)用生命周期以及應(yīng)用界面的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包