1.APP從桌面的icon被點(diǎn)擊到app啟動(dòng)惋鸥,詳盡過(guò)程描述
app的啟動(dòng)可以分為main函數(shù)之前跟main函數(shù)之后兩個(gè)部分
[1]main函數(shù)之前
A: 加載可執(zhí)行文件
B: 加載動(dòng)態(tài)鏈接器dyId
C:dyld遞歸加載動(dòng)態(tài)鏈接庫(kù)
(dyId的加載過(guò)程分為5個(gè)部分:加載動(dòng)態(tài)鏈接庫(kù)->rebase?所有圖片-》綁定所有圖片-》準(zhǔn)備圖片-》運(yùn)行初始化)
[2]main函數(shù)之后
A:main()?執(zhí)行UIApplicationMain()
B: UIApplicationMain()創(chuàng)建UIApplication
C: UIApplicationMain()創(chuàng)建AppDelegate并復(fù)制
D: UIApplication創(chuàng)建并管理RunLoop
E: UIApplication調(diào)用application:didFinishLaunchingWithOptions:
F: application:didFinishLaunchingWithOptions:創(chuàng)建并顯示Application Window
G: Application Window設(shè)置根控制器Root View Controller
2.APP啟動(dòng)優(yōu)化
既然app的完整啟動(dòng)分為main函數(shù)加載之前跟main函數(shù)加載之后兩個(gè)部分,那么我們可以從這兩個(gè)部分分別來(lái)做優(yōu)化
[1]main函數(shù)加載之前可做的優(yōu)化
A: 移除不必要的動(dòng)態(tài)庫(kù)以及圖片等資源文件
B: 減少項(xiàng)目中的分類(lèi)以及類(lèi)擴(kuò)展文件
C: 盡可能少的使用load方法螺句,可使用initital方法替代
[2]main函數(shù)加載之后可做的優(yōu)化
主要是對(duì)業(yè)務(wù)上的功能進(jìn)行優(yōu)化岛马,比如:
A: 在啟動(dòng)方法中只執(zhí)行必要的操作掸驱,一些可延后的操作不放在didfinishlauch中
B: 使用懶加載
C: 壓縮圖片資源