1、冷啟動/熱啟動
2、啟動順序
1.pre-main階段
1.1.加載應用的可執(zhí)行文件
1.2.加載動態(tài)鏈接庫加載器dyld(dynamicloader)
1.3.dyld遞歸加載應用所有依賴的dylib(dynamiclibrary 動態(tài)鏈接庫)
2.main()階段
2.1.dyld調用main()
2.2.調用UIApplicationMain()
2.3.調用applicationWillFinishLaunching
2.4.調用didFinishLaunchingWithOptions
3描融、優(yōu)化建議
pre_main階段
1.移除不需要用到的動態(tài)庫2.移除不需要用到的類3.合并功能類似的類和擴展4.盡量避免在+load方法里執(zhí)行的操作,可以推遲到+initialize方法中。
main階段
* 日志、統(tǒng)計等必須在 APP 一啟動就最先配置的事件
* 項目配置、環(huán)境配置尸昧、用戶信息的初始化 、推送旷偿、IM等事件
* 其他 SDK 和配置事件
梳理各個三方庫烹俗,找到可以延遲加載的庫,做延遲加載處理萍程,比如放到首頁控制器的viewDidAppear方法里幢妄。
梳理業(yè)務邏輯,把可以延遲執(zhí)行的邏輯茫负,做延遲執(zhí)行處理磁浇。比如檢查新版本、注冊推送通知等邏輯朽褪。
避免復雜/多余的計算置吓。
避免在首頁控制器的viewDidLoad和viewWillAppear做太多事情,這2個方法執(zhí)行完缔赠,首頁控制器才能顯示衍锚,部分可以延遲創(chuàng)建的視圖應做延遲創(chuàng)建/懶加載處理。
采用性能更好的API嗤堰。
首頁控制器用純代碼方式來構建戴质。