系統(tǒng)入口的代碼和參數(shù)說明:
argc:系統(tǒng)或者用戶傳入的參數(shù)
argv:系統(tǒng)或用戶傳入的實際參數(shù)
1.根據(jù)傳入的第三個參數(shù),創(chuàng)建UIApplication對象
2.根據(jù)傳入的第四個產生創(chuàng)建UIApplication對象的代理
3.設置剛剛創(chuàng)建出來的代理對象為UIApplication的代理
4.開啟一個事件循環(huán)(可以理解為里面是一個死循環(huán))這個時間循環(huán)是一個隊列(先進先出)先添加進去的先處理
ios程序啟動原理
啟動原理.png
程序啟動的完整過程
1.main函數(shù)
2.UIApplicationMain
- 創(chuàng)建UIApplication對象
- 創(chuàng)建UIApplication的delegate對象
3.delegate對象開始處理(監(jiān)聽)系統(tǒng)事件(沒有storyboard)
- 程序啟動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法
- 在application:didFinishLaunchingWithOptions:中創(chuàng)建UIWindow
- 創(chuàng)建和設置UIWindow的rootViewController
- 顯示窗口
3.根據(jù)Info.plist獲得最主要storyboard的文件名,加載最主要的storyboard(有storyboard)
- 創(chuàng)建UIWindow
- 創(chuàng)建和設置UIWindow的rootViewController
- 顯示窗口