app啟動(dòng)過(guò)程
- 解析info.plist
- 加載相關(guān)信息截酷,例如閃屏
- 沙盒建立、權(quán)限檢查
- mach-o加載
- 如果是胖二進(jìn)制文件(通用二進(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í)行
- 調(diào)用main函數(shù)
- 調(diào)用UIApplicationMain函數(shù)
- 調(diào)用applicationWillFinishLaunching方法
引用:https://blog.csdn.net/Tencent_Bugly/article/details/77363817?locationNum=1&fps=1
優(yōu)化方式
- 降低加載的動(dòng)態(tài)庫(kù)數(shù)量
- 降低oc類的數(shù)量
- c的constructor函數(shù)減少使用
- 降低c++靜態(tài)對(duì)象數(shù)量
- oc的load方法盡量用dispatch_once代替
- 減少分類的數(shù)量
- viewdidload中的內(nèi)容延遲加載
- 去掉無(wú)用的文件資源和類