自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

移動(dòng)開發(fā) iOS
本文介紹的是iPhone應(yīng)用程序生命周期講解,很詳細(xì)的為友們介紹了生命周期,我們一起來看內(nèi)容。

iPhone應(yīng)用程序生命周期講解是本文要介紹的內(nèi)容,不多說,直接進(jìn)入話題。iPhone應(yīng)用程序是由主函數(shù)main啟動(dòng),它負(fù)責(zé)調(diào)用UIApplicationMain函數(shù),該函數(shù)的形式如下所示:

  1. int UIApplicationMain (int argc,char *argv[], NSString *principalClassName, NSString *delegateClassName); 

那么UIApplicationMain函數(shù)到底做了哪些事情呢?這個(gè)函數(shù)主要負(fù)責(zé)三件事情:

(1)從給定的類名初始化應(yīng)用程序對象,也就是初始化UIApplication或者子類對象的一個(gè)實(shí)例,如果你在這里給定的是nil,那么系統(tǒng)會(huì)默認(rèn)UIApplication類,也就主要是這個(gè)類來控制以及協(xié)調(diào)應(yīng)用程序的運(yùn)行。在后續(xù)的工作中,你可以用靜態(tài)方法sharedApplication 來獲取應(yīng)用程序的句柄。

(2)從給定的應(yīng)用程序委托類,初始化一個(gè)應(yīng)用程序委托。并把該委托設(shè)置為應(yīng)用程序的委托,這里就有如果傳入?yún)?shù)為nil,會(huì)調(diào)用函數(shù)訪問 Info.plist文件來尋找主nib文件,獲取應(yīng)用程序委托。

(3)啟動(dòng)主事件循環(huán),并開始接收事件。

上面是UIApplicationMain函數(shù)的工作,接下來一個(gè)問題是應(yīng)用程序視圖的顯示、消息的控制怎么辦?下面就是UIApplication(或者子類)對象的職責(zé),這個(gè)對象主要做下面幾件事:

(1)負(fù)責(zé)處理到來的用戶事件,并分發(fā)事件消息到應(yīng)該處理該消息的目標(biāo)對象(sender,  action)。

(2)管理以及控制視圖,包括呈現(xiàn)、控制行為、當(dāng)前顯示視圖等。

(3)該對象有一個(gè)應(yīng)用程序委托對象,當(dāng)一些生命周期內(nèi)重要事件(可以包括系統(tǒng)事件或者生命周期控制事件)發(fā)生時(shí),應(yīng)用程序通知該對象。例如,應(yīng)用程序啟動(dòng)、內(nèi)存不夠了或者應(yīng)用程序結(jié)束等,讓這些事件發(fā)生時(shí),應(yīng)用程序委托去響應(yīng)。

通過上面的分析,可以知道UIApplication對開發(fā)者來說,是一個(gè)黑箱,它也可以是。因?yàn)樗械牟僮鳎伎梢杂伤奈衼韼臀覀兺瓿?,它只需要在后面維護(hù)一些不可更改的東西,如事件消息分發(fā)和傳遞、給委托發(fā)送事件處理請求等等,如,應(yīng)用程序加載處理完畢,它會(huì)發(fā)送消息給委托,然后委托可以在 applicationDidFinishLanching委托函數(shù)中去實(shí)現(xiàn)開發(fā)者想要的動(dòng)作。利用XCODE在創(chuàng)建應(yīng)用程序時(shí),會(huì)默認(rèn)實(shí)現(xiàn)一個(gè)應(yīng)用程序委托類。而對于加載的視圖,則有視圖相關(guān)的委托類來處理視圖加載過程的生命事件。下面說明委托主要可以辦哪些事情:

控制應(yīng)用程序的行為

  1. - (void)applicationDidFinishLaunching:(UIApplication *)application 

應(yīng)用程序啟動(dòng)完畢。

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

當(dāng)由于其它方法打開應(yīng)用程序(如URL指定或者連接),通知委托啟動(dòng)完畢

  1. - (void)applicationWillTerminate:(UIApplication *)application 

 

通知委托,應(yīng)用程序?qū)⒃陉P(guān)閉 退出,請做一些清理工作。

  1. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application  

通知委托,應(yīng)用程序收到了為來自系統(tǒng)的內(nèi)存不足警告。-(void)applicationSignificantTimeChange:(UIApplication *)application

通知委托系統(tǒng)時(shí)間發(fā)生改變(主要是指時(shí)間屬性,而不是具體的時(shí)間值)

打開URL

  1. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

打開指定的URL

控制狀態(tài)欄方位變化

  1. – application:willChangeStatusBarOrientation:duration: 

設(shè)備方向?qū)⒁l(fā)生改變

  1. – application:didChangeStatusBarOrientation:  

活動(dòng)狀態(tài)改變

  1. - (void)applicationWillResignActive:(UIApplication *)application 

通知委托應(yīng)用程序?qū)⑦M(jìn)入非活動(dòng)狀態(tài),在此期間,應(yīng)用程序不接收消息或事件。-(void)applicationDidBecomeActive:(UIApplication *)application

通知委托應(yīng)用程序進(jìn)入活動(dòng)狀態(tài),請恢復(fù)數(shù)據(jù)

可以看到UIApplication的頭文件實(shí)現(xiàn)

  1. @interface UIApplication :UIResponder <UIActionSheetDelegate>{  
  2. @package  
  3. id<UIApplicationDelegate> _delegate ;  //這就是應(yīng)用程序委托。  
  4. NSTimer .......  

因此,在UIApplication中處理的系統(tǒng)事件時(shí),只需轉(zhuǎn)到_delegate這個(gè)類去處理,這個(gè)類對象就是應(yīng)用程序委托對象。我們可以從應(yīng)用程序的單例類對象中得到應(yīng)用程序委托的對象
UIApplicationDelegate* myDelegate = [[UIApplication sharedApplication] delegate];

UIApplication接收到所有的系統(tǒng)事件和生命周期事件時(shí),都會(huì)把事件傳遞給UIApplicationDelegate進(jìn)行處理,對于用戶輸入事件,則傳遞給相應(yīng)的目標(biāo)對象去處理。比如我們在應(yīng)用程序被來電等消息后,可以調(diào)用應(yīng)用程序委托類的 applicationWillResignActive()方法,這個(gè)方法在用戶鎖住屏幕時(shí),也會(huì)調(diào)用,與之相適應(yīng)的是應(yīng)用程序重新被用戶打開時(shí)的委托方法。另外常用的就是內(nèi)存不足的系統(tǒng)警告,此時(shí)會(huì)調(diào)用應(yīng)用程序委托類的applicationDidReceiveMemoryWarning()方法,然后我們就可以試著釋放一些內(nèi)存了。

上面就是應(yīng)用程序生命周期(啟動(dòng),中止,恢復(fù),退出等過程)的應(yīng)用程序處理。

小結(jié):iPhone應(yīng)用程序生命周期講解的內(nèi)容介紹完了,希望本文對你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-10 16:50:10

iPhone生命周期

2015-07-09 15:42:48

ios應(yīng)用生命周期

2013-07-31 14:50:32

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

2009-06-24 10:34:39

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

2014-07-11 11:09:10

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

2013-09-26 11:20:34

Informatica

2012-05-28 15:37:20

WP程序生命周期

2014-02-24 10:50:32

DevOps云應(yīng)用

2023-12-21 08:00:00

ChatGPT人工智能大型語言模型

2010-08-01 15:29:04

AndroidDalvik

2014-09-28 11:28:02

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

2025-04-28 01:22:00

2012-08-16 09:38:38

ASP.NET

2010-04-02 09:02:02

ASP.NET MVC

2012-06-20 10:29:16

敏捷開發(fā)

2014-07-16 13:39:30

Windows Pho

2015-07-08 16:28:23

weak生命周期

2011-07-21 10:47:37

iPhone Cocoa 委托

2023-04-19 07:50:59

?云原生生命周期管理

2012-12-04 10:02:03

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)