1. App啟動(dòng)過程
? 解析Info.plist
? 加載相關(guān)信息,例如如閃屏
? 沙箱建立、權(quán)限檢查
? Mach-O加載
? 如果是胖二進(jìn)制文件,尋找合適當(dāng)前CPU類別的部分
? 加載所有依賴的Mach-O文件(遞歸調(diào)用Mach-O加載的方法)
? 定位內(nèi)部、外部指針引用,例如字符串、函數(shù)等
? 執(zhí)行聲明為attribute((constructor))的C函數(shù)
? 加載類擴(kuò)展(Category)中的方法
? C++靜態(tài)對(duì)象加載、調(diào)用ObjC的 +load 函數(shù)
? 程序執(zhí)行
· 1.main函數(shù)
· 2.執(zhí)行UIApplicationMain函數(shù)
· 1.創(chuàng)建UIApplication對(duì)象
· 2.創(chuàng)建UIApplicationDelegate對(duì)象并復(fù)制
· 3.讀取配置文件info.plist,設(shè)置程序啟動(dòng)的一些屬性,(關(guān)于info.plist的內(nèi)容可網(wǎng)上搜索下)
· 4.創(chuàng)建應(yīng)用程序的Main Runloop循環(huán)
· 3.UIApplicationDelegate對(duì)象開始處理監(jiān)聽到的事件
· 1.程序啟動(dòng)成功之后,首先調(diào)用application:didFinishLaunchingWithOptions:方法,
· 如果info.plist文件中配置了啟動(dòng)storyboard文件名,則加載storyboard文件。
· 如果沒有配置,則根據(jù)代碼來(lái)創(chuàng)建UIWindow--->UIWindow的rootViewController-->顯示
更多:iOS面試題合集