iPhone開發進階(2)iPhone應用程序的啟動過程
iPhone應用程序的啟動過程是本文要介紹的內容,上一回我們看到了iPhone的入口函數main,這之后它有是怎樣啟動應用程序,初始化的呢,這些都是通過 UIApplicationMain 來實現的,我們來看啟動過程。
其啟動的流程圖大致如下圖所示:
- int retVal = UIApplicationMain(argc, argv, nil, nil);
通過上面的語句,創建UIApplication實例。同時,查看應用程序的 Info.plist 文件(該文件記錄了一些應用程序的基礎信息,比如程序名稱,版本,圖標等)。該文件還包含應用程序資源文件的名稱(nib文件,名稱用NSMainNibFile鍵指定)。如下所示:
- <key>NSMainNibFile</key>
- <string>MainWindow</string>
上面的意思是指,在應用程序啟動的時候,需要從nib文件中加載名為 MainWindow 的資源。
其實,nib文件也是參照項目中Resources組中MainWindow.xib文件,我們雙擊該文件,啟動Interface Builder后可以看到下面的圖示:
Interface Builder 中有以下4個項目:
File’s Owner 對象,實際上就是 UIApplication 的實例。
First Responder 對象。每個程序都會有一個***響應者,比如鼠標事件,鍵盤事件等,它就是對應的那個對象。比如多文檔程序中,menu的響應事件一般都是連接到FirstResponder中去的,因為主界面一般都在別的nib里面,此時的FirstResponder就是你的那個主nib的FileOwner。
Delegate 對象。
Window。應用程序啟動的時候所顯示的窗口。
應用程序啟動之后,像下面圖一樣,你可以定制自己的行為,如圖:
程序啟動之后,會發送消息給 UIApplicationDelegate 的 applicationDidFinishLaunching 方法,在這里我們完成自己的初始化過程。如下面的代碼。
- - (void)applicationDidFinishLaunching:(UIApplication *)application {
- // Override point for customization after app launch
- [window addSubview:viewController.view];
- [window makeKeyAndVisible];
- }
- - (void)dealloc {
- [viewController release];
- [window release];
- [super dealloc];
- }
- [window addSubview:viewController.view] 表示 XXXXXXViewController.xib 、[window makeKeyAndVisible]
是顯示該窗口。
總結以上的內容,iPhone應用程序的引導過程如下所示:
- main.m → MainWindow.xib → XXXXXXDelegate.m → XXXXXXViewController.m → XXXXXXViewController.xib
或者看下面的圖來理解。
小結:iPhone應用程序的啟動過程的內容介紹完了,希望通過本文的學習能對你有所幫助!如果想繼續深入了解的話,請參考以下幾篇文章:
iPhone開發進階(1)iPhone應用程序項目構成案例實現