天天看點

iOS開發之iOS程式的啟動過程

iOS開發之iOS程式的啟動過程

程式啟動的完整過程:

(1)main函數

(2)uiapplicationmain

* 建立uiapplication對象

* 建立uiapplication的delegate對象

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

* 程式啟動完畢的時候, 就會調用代理的application:didfinishlaunchingwithoptions:方法

* 在application:didfinishlaunchingwithoptions:中建立uiwindow

* 建立和設定uiwindow的rootviewcontroller

* 顯示視窗

(3)根據info.plist獲得最主要storyboard的檔案名,加載最主要的storyboard(有storyboard)

* 建立uiwindow

(4)uiapplicationmain

main函數中執行了一個uiapplicationmain這個函數:

int uiapplicationmain(int argc, char *argv[], nsstring

*principalclassname, nsstring *delegateclassname);

各參數含義:

argc、argv:直接傳遞給uiapplicationmain進行相關處理即可。

principalclassname:指定應用程式類名(app的象征),該類必須是uiapplication(或子類)。如果為nil,則用uiapplication類作為預設值。

delegateclassname:指定應用程式的代理類,該類必須遵守uiapplicationdelegate協定。

uiapplicationmain函數會根據principalclassname建立uiapplication對象,根據delegateclassname建立一個delegate對象,并将該delegate對象指派給uiapplication對象中的delegate屬性。

接着會建立應用程式的main runloop(事件循環),進行事件的處理(首先會在程式完畢後調用delegate對象的application:didfinishlaunchingwithoptions:方法)。

程式正常退出時uiapplicationmain函數才傳回。

繼續閱讀