概念
1.熱啟動(dòng):就是按下home鍵的時(shí)候述召,app還存在一段時(shí)間笔诵,這時(shí)點(diǎn)擊app馬上就能恢復(fù)到原狀態(tài)腥沽,這種啟動(dòng)我們稱為熱啟動(dòng)谅将。
2.冷啟動(dòng):app被kill掉之后漾狼,重新打開啟動(dòng)過程為冷啟動(dòng)。
優(yōu)化
1.熱啟動(dòng)優(yōu)化饥臂。
?一.數(shù)據(jù)優(yōu)化,將耗時(shí)操作做異步處理逊躁。
二.檢查NSUserDefaults的存儲(chǔ),NSUserDefaults實(shí)際上是在Library文件夾下會(huì)生產(chǎn)一個(gè)plist文件,加載的時(shí)候是整個(gè)plist配置文件全部load到內(nèi)存中。所以非常頻繁的存取大量數(shù)據(jù)也是有可能導(dǎo)致APP啟動(dòng)卡頓的
2.冷啟動(dòng)優(yōu)化
利用DYLD_PRINT_STATISTICS分析main()函數(shù)之前的耗時(shí)
重新梳理架構(gòu)隅熙,減少動(dòng)態(tài)庫(kù)稽煤、ObjC類的數(shù)目,減少Category的數(shù)目
定期掃描不再使用的動(dòng)態(tài)庫(kù)囚戚、類酵熙、函數(shù),例如每?jī)蓚€(gè)迭代一次
用dispatchonce()代替所有的__attribute__((constructor))函數(shù)驰坊、C++靜態(tài)對(duì)象初始化匾二、ObjC的+load
在設(shè)計(jì)師可接受的范圍內(nèi)壓縮圖片的大小,會(huì)有意外收獲
利用錨點(diǎn)分析applicationWillFinishLaunching的耗時(shí)
將不需要馬上在applicationWillFinishLaunching執(zhí)行的代碼延后執(zhí)行
rootViewController的加載庐橙,適當(dāng)將某一級(jí)的childViewController或subviews延后加載
如果你的App可能會(huì)被后臺(tái)拉起并冷啟動(dòng)假勿,可考慮不加載rootViewController