你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> iOS程序啟動過程

iOS程序啟動過程

編輯:IOS技巧綜合
[摘要]本文是對iOS程序啟動過程的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

  main函數之前的底層環境搭建(代碼拷貝、內存的開辟等操作系統相關的開啟一個進程)不再描述,我們從main函數開始。

1 main函數

int main(int argc, char * argv[]) {
    NSLog(@"===%s",argv[0]);
    @autoreleasepool {
        /// 函數原型:
        //  int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

  這裡面的代碼一般是不變的。首先是一個自動釋放池,保證結束時內存釋放,下面是參數介紹:

  argc, argv:是標C的參數,argc為argv數組中元素的個數。argv一般有一個元素argv[0]即當前可執行程序的路徑。(另外,在linux系統下我們通過終端打開一個程序可以給它傳遞參數,具體不再展開。如果不知所雲括號裡面的自動忽略);

  principalClassName:指定應用程序類,該類必須是UIApplication(或子類)。如果為nil,則用UIApplication類作為默認值,它是一個單例,代表一個進程,也是程序創建的第一個對象,利用UIApplication對象,能進行一些應用級別的操作;

  delegateClassName:指定應用程序類的代理類,該類必須遵守UIApplicationDelegate協議。

2UIApplicationMain

  1)根據傳進的參數創建UIApplication對象;

   2)根據傳進的參數創建UIApplication的delegate對象,並將該delegate對象賦值給UIApplication對象中的delegate屬性。

   3)開啟一個消息循環

  下面分為storyboard啟動和沒有storyboard啟動

##有storyboard##

3 根據Info.plist加載storyboard

   1)創建UIWindow,UIWindow是一種特殊的UIView,通常在一個App中只會有一個UIWindow(注意是通常,還有其它的,比如彈出的鍵盤)。設置為主窗口,同一時刻主窗口只有一個,可以通過[UIApplicationsharedApplication].keyWindow獲取。

   2)創建和設置UIWindow的rootViewController。

   3)顯示窗口


##沒有storyboard##

3 delegate對象開始處理(監聽)系統事件(沒有storyboard)

   1)程序啟動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法

2)在application:didFinishLaunchingWithOptions:中創建UIWindow:window

3)創建和設置UIWindow的rootViewController

4)顯示並設置window為主窗口:[window makeKeyAndVisible]; 然後self.window = window;防止被釋放。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved