iPhone開發進階(3) --- iPhone應用程式的啟動過程

來源:互聯網
上載者:User

 

上一回我們看到了iPhone的入口函數main,這之後它有是怎樣啟動應用程式,初始化的呢,這些都是通過 UIApplicationMain 來實現的。

其啟動的流程圖大致如所示:

 


1 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應用程式的引導過程如下所示:

1 main.m → MainWindow.xib → XXXXXXDelegate.m → XXXXXXViewController.m → XXXXXXViewController.xib


或者看下面的圖來理解。

作者:易飛揚

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.