應用程序啟動原理
程序的入口:main函數
-
1.執行main
- UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class]))
- 第三個參數:應用程序對象的名稱,如果指定為nil,就代表是@“UIApplication”
- nil默認代表寫了一個UIApplication字符串
- 第四個參數:Delegate的classname
- 默認代表@@"AppDelegate"
- 第三個參數:應用程序對象的名稱,如果指定為nil,就代表是@“UIApplication”
- UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class]))
-
2.執行UIApplication對象
- UIApplicationMain內部會創建UIApplication對象,并設置它的代理
- 創建一個事件循環,主運行循環(死循環:保證應用程序一直能夠運行),保證應用程序不退出
- 加載配置文件,讀取配置信息
- 讀取info.plist文件時,會做很多判斷,其中包括一項Main storyboard file base name 有沒有指定main
- 如果指定,就會加載main.storyboard顯示出來,如果沒有指定main,就什么都不去做
- 讀取完畢后,會通知應用的代理,應用程序啟動完畢,就會調用application的didFinishLaunchWithOptions:
-
在加載info.plist后,判斷下是否指定main,如果指定了,就會去加載StoryBoard.
- 1.創建一個窗口
- 2.加載MainStoryBoard,初始化一個控制器.
- 3.把初始化出來的控制器設置為窗口的根控制器.讓窗口顯示到屏幕上.
如果沒有指定Mian話, 那這個時候就需要我們手動的去創建窗口.
當info.plist文件沒有找到的時候,那么程序就加載完畢,那么在程序加載完畢時要自己手動去創建窗口.