iOS APP性能優(yōu)化

性能對 iOS 應(yīng)用的開發(fā)尤其重要,如果你的應(yīng)用反應(yīng)很慢,失望的用戶會把他們的失望寫滿App Store的評論。然而由于iOS設(shè)備的限制,有時搞好性能是一件難事。開發(fā)過程中你會有很多需要注意的事項,你也很容易在做出選擇時忘記考慮性能影響。

這篇文章總結(jié)了開發(fā)中常用到的一些性能優(yōu)化點(diǎn)

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中實(shí)現(xiàn)applicationDidReceiveMemoryWarning UIViewController 重寫didReceiveMemoryWarning 注冊通知:UIApplicationDidReceiveMemoryWarningNotification

11:性能檢測 靜態(tài)分析APP:菜單-Product-Analyze 可以定位未使用的變量,內(nèi)存泄漏 分析APP每個操作占用時間: Instruments-Time profiler。 動態(tài)分析內(nèi)存泄漏:Instruments-Leaks。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容