iOS內(nèi)存優(yōu)化

內(nèi)存分析

靜態(tài)分析 Analyze

動(dòng)態(tài)分析 Instruments

  1. 可以查看內(nèi)存分配情況Allocations
  2. 可以查看某個(gè)操作后內(nèi)存暴漲的情況。
  3. 可以查看是否內(nèi)存泄漏 Leaks。

在BaseViewController的dealloc方法里打印一下,看看離開某個(gè)頁面后控制器是否被銷毀了。

內(nèi)存優(yōu)化

  1. cell復(fù)用,header、footer復(fù)用。
  2. 盡量把view設(shè)置不透明。
  3. 減少視圖的層級。
  4. 加載圖片的方式
  • UIImage imageNamed: ImageAssets 用于多個(gè)地方重復(fù)使用,加載時(shí)會(huì)緩存在內(nèi)存里。
  • UIImage imageWithContentsOfFile 一般用在圖片數(shù)據(jù)很大,一般不需要多次使用的情況。不會(huì)長期存在內(nèi)存里。
  1. 不要阻塞主線程。耗時(shí)操作放在后臺(tái)進(jìn)行,如網(wǎng)絡(luò)請求,數(shù)據(jù)庫讀寫。dispatch_get_main_queue dispatch_get_global_queue
  2. 圖片大小最好和UIImageView的大小相同。在運(yùn)行中縮放圖片是很耗費(fèi)資源的。如果圖片是網(wǎng)絡(luò)獲取的,可以在下載完成后,在后臺(tái)線程縮放一次,然后在賦值。
  3. 懶加載。
  4. 緩存,緩存圖片SDWebImage,緩存行高。NSCache系統(tǒng)回收內(nèi)存的時(shí)候它會(huì)自動(dòng)刪掉它的內(nèi)容。
  5. NSDateFormatter和NSCalendar初始化很慢,可以把它作為屬性或者成員變量,只在第一次用到的時(shí)候初始化一次。
  6. 避免反復(fù)處理數(shù)據(jù)。比如tableView最好用array。
  7. 使用Shadow Path來畫陰影
  8. 優(yōu)化TableView
  • 正確復(fù)用cell
  • 視圖盡量不透明
  • 避免漸變,圖片縮放。
  • 緩存行高
  • 異步加載,緩存請求結(jié)果
  • 使用shadowPath來畫陰影
  • 減少視圖層級
  • 使用正確的數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),減少數(shù)據(jù)處理
  • 使用rowHeight sectionHeaderHeight sectionFooterHeight來設(shè)定固定的高,不要用delegate
  1. 使用正確的數(shù)據(jù)存儲(chǔ)
    NSUserDefaults適合小數(shù)據(jù)。
    plist 每次會(huì)讀取整個(gè)文件到內(nèi)存里。
    NSCoding對象歸檔 也會(huì)讀取整個(gè)文件到內(nèi)存。
    大的數(shù)據(jù)存儲(chǔ)用SQLite或Core Data。
  2. for循環(huán)里創(chuàng)建對象耗內(nèi)存時(shí)用Autorelease Pool
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容