應(yīng)用程序的啟動(dòng)步驟
1.執(zhí)行程序入口函數(shù)main()
2.執(zhí)行main()中返回的UIApplicationMain函數(shù)
3在UIApplicationMain中創(chuàng)建UIApplication對象 設(shè)置UIApplication代理
4開啟一個(gè)主運(yùn)行循環(huán)(死循環(huán)),開始處理事件
(此時(shí)會(huì)調(diào)用delegate對象的application:didFinishLaunchingWithOptions:方法表示應(yīng)用程序加載完畢)
5讀取info.plist文件加載配置信息(此時(shí)若在application:didFinishLaunchingWithOptions:中自定義了窗口顯示就不會(huì)執(zhí)行main.storyboard)
若執(zhí)行main.storyboard 選項(xiàng) 此時(shí)系統(tǒng)會(huì)自動(dòng)創(chuàng)建window 并把箭頭指向的控制器作為窗口的根控制器
自定義窗口時(shí)[self.window makeKeyandVisible]做的幾件事:
1.設(shè)置window的hidden屬性為no(默認(rèn)yes),然后把根控制器的view添加到窗口上(此時(shí)會(huì)調(diào)用控制器的loadView方法)
即 self,window.hidden = NO;
2.把當(dāng)前窗口設(shè)置為應(yīng)用程序的主窗口
self.window = [UIApplication shareApplication].keyWindow;
(可以在此方法觸發(fā)前后打印[UIApplication shareApplication].keyWindow,window屬性及window.subview驗(yàn)證)
附圖:
