iPhone應(yīng)用程序中生命周期詳解
iPhone應(yīng)用程序中生命周期詳解是本文要介紹的內(nèi)容,不多說,直接進(jìn)入本文的話題。任何程序的生命周期都是指從程序加載到程序結(jié)束這一短時(shí)間。在iPhone中,用戶通過點(diǎn)擊主頁面上的程度圖標(biāo)啟動(dòng)一個(gè)程序。點(diǎn)擊后,系統(tǒng)會(huì)顯示一個(gè)過渡的畫面然后調(diào)用main()函數(shù)來加載程序。
從這一刻開始,大量的初始化工作都交給了UIKit,它加載程序的用戶界面并啟動(dòng)事件循環(huán)。在時(shí)間循環(huán)過程中,UIKit將傳入的時(shí)間和自定義對(duì)象相關(guān)聯(lián)并響應(yīng)程序的命令事件。如果用戶的某個(gè)操作引起程序的退出,UIKit會(huì)通知程序并開始結(jié)束程序過程。
下圖簡(jiǎn)單的反應(yīng)了iPhone程序的周期。
在iPhone程序中,main()函數(shù)很少被使用。絕大多數(shù)實(shí)際的工作都交由UIApplicationMain()函數(shù)來處理。因此當(dāng)你在Xcode中新建一個(gè)工程時(shí),任何工程的模板生成的main()函數(shù)幾乎都是一樣的,代碼如下:
- #import <UIKit/UIKit.h>
 - int main(int argc, char *argv[])
 - {
 - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 - int retVal = UIApplicationMain(argc, argv, nil, nil);
 - [pool release];
 - return retVal;
 - }
 - #import <UIKit/UIKit.h>
 - int main(int argc, char *argv[])
 - {
 - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 - int retVal = UIApplicationMain(argc, argv, nil, nil);
 - [pool release];
 - return retVal;
 - }
 
main()函數(shù)主要完成3個(gè)工作:
1、它創(chuàng)建了一個(gè)自動(dòng)釋放池;
2、調(diào)用UIApplicationMain()函數(shù);
3、釋放自動(dòng)釋放池。一般來說,開發(fā)者不需要修改main()函數(shù)。
UIApplicationMain()函數(shù)是初始化程序的核心,它接受4個(gè)參數(shù),并且開發(fā)者永遠(yuǎn)不要修改傳入的這4個(gè)參數(shù)。其中argc和argv兩個(gè)參數(shù)來自于main()接受的兩個(gè)參數(shù);另外兩個(gè)String型參數(shù)分別表示程序的主要類(principal class)和代理類(delegate class)。
如果主要類(principal class)為nil,則默認(rèn)為UIApplication;如果代理類(delegate class)為nil,則程序假設(shè)程序的代理來自Main nib文件。如果這兩個(gè)參數(shù)任意一個(gè)不為nil,則UIApplicationMain()函數(shù)則會(huì)根據(jù)參數(shù)創(chuàng)建相應(yīng)的功能類。因此,如果程序中使用自定義的UIApplication類的子類(不建議繼承UIApplication類建立自定義的子類),你需要將你的自定義類名作為第3個(gè)參數(shù)傳進(jìn)來。
小結(jié):iPhone應(yīng)用程序中生命周期詳解的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!
















 
 
 




 
 
 
 