iOS開發之iOS程序的啓動過程

程序啓動的完整過程:app

1main函數函數

2UIApplicationMainoop

* 建立UIApplication對象代理

* 建立UIApplication的delegate對象對象

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

* 程序啓動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法ip

* 在application:didFinishLaunchingWithOptions:中建立UIWindowci

* 建立和設置UIWindow的rootViewControllerit

* 顯示窗口io

3)根據Info.plist得到最主要storyboard的文件名,加載最主要的storyboard(storyboard)

* 建立UIWindow

* 建立和設置UIWindow的rootViewController

* 顯示窗口

4UIApplicationMain

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

int UIApplicationMain(int argc, char *argv[], NSString

*principalClassName, NSString *delegateClassName);

各參數含義:

argcargv:直接傳遞給UIApplicationMain進行相關處理便可。

principalClassName:指定應用程序類名(app的象徵),該類必須是UIApplication(或子類)。若是爲nil,則用UIApplication類做爲默認值。

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

 

UIApplicationMain函數會根據principalClassName建立UIApplication對象,根據delegateClassName建立一個delegate對象,並將該delegate對象賦值給UIApplication對象中的delegate屬性。

接着會創建應用程序的Main Runloop(事件循環),進行事件的處理(首先會在程序完畢後調用delegate對象的application:didFinishLaunchingWithOptions:方法)。

程序正常退出時UIApplicationMain函數才返回。

相關文章
相關標籤/搜索