iPhone應用程序中生命周期詳解
iPhone應用程序中生命周期詳解是本文要介紹的內容,不多說,直接進入本文的話題。任何程序的生命周期都是指從程序加載到程序結束這一短時間。在iPhone中,用戶通過點擊主頁面上的程度圖標啟動一個程序。點擊后,系統會顯示一個過渡的畫面然后調用main()函數來加載程序。
從這一刻開始,大量的初始化工作都交給了UIKit,它加載程序的用戶界面并啟動事件循環。在時間循環過程中,UIKit將傳入的時間和自定義對象相關聯并響應程序的命令事件。如果用戶的某個操作引起程序的退出,UIKit會通知程序并開始結束程序過程。
下圖簡單的反應了iPhone程序的周期。
在iPhone程序中,main()函數很少被使用。絕大多數實際的工作都交由UIApplicationMain()函數來處理。因此當你在Xcode中新建一個工程時,任何工程的模板生成的main()函數幾乎都是一樣的,代碼如下:
- #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()函數主要完成3個工作:
1、它創建了一個自動釋放池;
2、調用UIApplicationMain()函數;
3、釋放自動釋放池。一般來說,開發者不需要修改main()函數。
UIApplicationMain()函數是初始化程序的核心,它接受4個參數,并且開發者永遠不要修改傳入的這4個參數。其中argc和argv兩個參數來自于main()接受的兩個參數;另外兩個String型參數分別表示程序的主要類(principal class)和代理類(delegate class)。
如果主要類(principal class)為nil,則默認為UIApplication;如果代理類(delegate class)為nil,則程序假設程序的代理來自Main nib文件。如果這兩個參數任意一個不為nil,則UIApplicationMain()函數則會根據參數創建相應的功能類。因此,如果程序中使用自定義的UIApplication類的子類(不建議繼承UIApplication類建立自定義的子類),你需要將你的自定義類名作為第3個參數傳進來。
小結:iPhone應用程序中生命周期詳解的內容介紹完了,希望本文對你有所幫助!