性能對 iOS 應(yīng)用的開發(fā)尤其重要射众,如果你的應(yīng)用反應(yīng)很慢,失望的用戶會把他們的失望寫滿App Store的評論欣福。然而由于iOS設(shè)備的限制责球,有時搞好性能是一件難事。開發(fā)過程中你會有很多需要注意的事項,你也很容易在做出選擇時忘記考慮性能影響雏逾。
這篇文章總結(jié)了開發(fā)中常用到的一些性能優(yōu)化點
1:應(yīng)用啟動時間 應(yīng)用啟動時嘉裤,只加載啟動相關(guān)的資源和必須在啟動時加載的資源。
2:本地圖片加載方式 本地圖片加載常用方法有兩種:
a. [UIImage imageNamed:@"xx.png"] 圖片多次使用時使用栖博,需要使用此方式加入緩存
b. [[UIImage alloc] initWithContentsOfFile :@"xx.png"] 圖片不常使用時屑宠,不使用緩存
3:不要阻塞主線程 開發(fā)中除了UI處理外,其它任務(wù)盡量放在后臺線程加載仇让。
4:UIView
a. 如果你的View是透明的典奉,需要設(shè)置opaque為YES。
b. 使用UITableView和UICollectionView的重用丧叽,并緩存動態(tài)Cell的高度卫玖。
c. 延遲加載不急需要的Views。
d. 盡量避免代碼裁剪圖片踊淳,如果必須需在后臺線程處理假瞬。
5:緩存 緩存需要重復(fù)顯示的數(shù)據(jù),像網(wǎng)絡(luò)請求迂尝、圖片脱茉。
6:避免對象創(chuàng)建時過多消耗資源 假設(shè)應(yīng)用中多次使用到日期處理,將保持日期對象全局唯一垄开。
7:釋放對象
a. ARC中創(chuàng)建對象過多時琴许,內(nèi)存會持續(xù)升高,在需要時添加自動釋放池釋放不需要的資源溉躲。
b. 及時釋放自己開辟的內(nèi)存空間榜田。
8:防止循環(huán)引用
a. 在頭文件中盡量避免import導(dǎo)入頭文件,使用@class 聲明類锻梳,在.m文件中#import串慰。
b. 在設(shè)置代理/block中使用相應(yīng)的關(guān)鍵字引用對象。
9:數(shù)據(jù)存儲 數(shù)據(jù)存儲大致分plist唱蒸、對象歸檔、sqlite灸叼。NSUserDefault適合存儲小量數(shù)據(jù),私密信息使用Keychain, sqlite適合大量數(shù)據(jù)神汹,歸檔性能較低,盡量避免使用。
10:內(nèi)存警告處理 當(dāng)系統(tǒng)發(fā)出內(nèi)存警告時古今,釋放不必要的數(shù)據(jù)的三種方式屁魏。 AppDelegate中實現(xiàn)applicationDidReceiveMemoryWarning UIViewController 重寫didReceiveMemoryWarning 注冊通知:UIApplicationDidReceiveMemoryWarningNotification
11:性能檢測 靜態(tài)分析APP:菜單-Product-Analyze 可以定位未使用的變量,內(nèi)存泄漏 分析APP每個操作占用時間: Instruments-Time profiler捉腥。 動態(tài)分析內(nèi)存泄漏:Instruments-Leaks氓拼。