1:應(yīng)用啟動(dòng)時(shí)間 應(yīng)用啟動(dòng)時(shí),只加載啟動(dòng)相關(guān)的資源和必須在啟動(dòng)時(shí)加載的資源。
2:本地圖片加載方式 本地圖片加載常用方法有兩種: (1),[UIImage imageNamed:@""] 圖片多次使用時(shí)使用,需要使用此方式加入緩存 (2),[[UIImage alloc] initWithContentsOfFile:@""] 圖片不常使用時(shí),不使用緩存
3:不要阻塞主線程 開(kāi)發(fā)中除了UI處理外,其它任務(wù)盡量放在后臺(tái)線程加載。
4:UIView (1),如果你的View是透明的,需要設(shè)置opaque為YES。 (2),使用UITableView和UICollectionView的重用,并緩存動(dòng)態(tài)Cell的高度。 (3), 延遲加載不急需要的Views。 (4),盡量避免代碼裁剪圖片,如果必須需在后臺(tái)線程處理。
5:緩存 緩存需要重復(fù)顯示的數(shù)據(jù),像網(wǎng)絡(luò)請(qǐng)求、圖片。
6:避免對(duì)象創(chuàng)建時(shí)過(guò)多消耗資源 假設(shè)應(yīng)用中多次使用到日期處理,將保持日期對(duì)象全局唯一。
7:釋放對(duì)象 (1),ARC中創(chuàng)建對(duì)象過(guò)多時(shí),內(nèi)存會(huì)持續(xù)升高,在需要時(shí)添加自動(dòng)釋放池釋放不需要的資源。 (2),及時(shí)釋放自己開(kāi)辟的內(nèi)存空間。
8:防止循環(huán)引用 (1),在頭文件中盡量避免import導(dǎo)入頭文件,使用@class 聲明類(lèi),在.m文件中#import。 (2),在設(shè)置代理/block中使用相應(yīng)的關(guān)鍵字引用對(duì)象。
9:數(shù)據(jù)存儲(chǔ) 數(shù)據(jù)存儲(chǔ)大致分plist、對(duì)象歸檔、sqlite。NSUserDefault適合存儲(chǔ)小量數(shù)據(jù),私密信息使用Keychain, sqlite適合大量數(shù)據(jù),歸檔性能較低,盡量避免使用。
10:內(nèi)存警告處理 當(dāng)系統(tǒng)發(fā)出內(nèi)存警告時(shí),釋放不必要的數(shù)據(jù)的三種方式。 AppDelegate中實(shí)現(xiàn)applicationDidReceiveMemoryWarning UIViewController 重寫(xiě)didReceiveMemoryWarning 注冊(cè)通知:UIApplicationDidReceiveMemoryWarningNotification
11:性能檢測(cè) 靜態(tài)分析APP:菜單-Product-Analyze 可以定位未使用的變量,內(nèi)存泄漏 分析APP每個(gè)操作占用時(shí)間: Instruments-Time profiler。 動(dòng)態(tài)分析內(nèi)存泄漏:Instruments-Leaks。