應用程序啟動原理
程序的入口:main函數
-
1.執(zhí)行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.執(zhí)行UIApplication對象
- UIApplicationMain內部會創(chuàng)建UIApplication對象蓬戚,并設置它的代理
- 創(chuàng)建一個事件循環(huán),主運行循環(huán)(死循環(huán):保證應用程序一直能夠運行),保證應用程序不退出
- 加載配置文件尾膊,讀取配置信息
- 讀取info.plist文件時,會做很多判斷,其中包括一項Main storyboard file base name 有沒有指定main
- 如果指定赚抡,就會加載main.storyboard顯示出來吝沫,如果沒有指定main呻澜,就什么都不去做
- 讀取完畢后,會通知應用的代理惨险,應用程序啟動完畢易迹,就會調用application的didFinishLaunchWithOptions:
-
在加載info.plist后,判斷下是否指定main,如果指定了,就會去加載StoryBoard.
- 1.創(chuàng)建一個窗口
- 2.加載MainStoryBoard,初始化一個控制器.
- 3.把初始化出來的控制器設置為窗口的根控制器.讓窗口顯示到屏幕上.
如果沒有指定Mian話, 那這個時候就需要我們手動的去創(chuàng)建窗口.
當info.plist文件沒有找到的時候,那么程序就加載完畢,那么在程序加載完畢時要自己手動去創(chuàng)建窗口.