UITableView是iOS開發(fā)中使用最頻繁的控件之一, 所以關于UITableView的優(yōu)化問題也是經(jīng)常要去面對的一個問題.
一. 首先是性能優(yōu)化.
主要的兩個優(yōu)化方式:
a.
保證UITableViewCell正確設置了reuseIdentifier, 如果相同的cell未進行重用, 那么每顯示一行cell就會創(chuàng)建一個全新的cell, 這對性能的影響是相當大的.
b.
保證heightForRowAtIndex: 方法中除了計算cell高度以外沒有其他無關操作, 一定要緩存行高, 因為這個方法調(diào)用非常的頻繁, 重復不必要的操作和計算會損耗性能.
二. 關于子視圖的優(yōu)化:
a.
保證所有的子視圖都指定了背景顏色, 很多程序員在開發(fā)中都會遇到的一個情況就是在兩個控制器之間跳轉(zhuǎn)時, 如果目標控制器沒有設置背景顏色, 就會出現(xiàn)卡頓的現(xiàn)象, 但其實cell也是一樣的, 如果子控件沒有指定背景顏色, 會影響TableView滾動的流暢度.
b.
保證不透明視圖的opaque屬性都是YES,因為系統(tǒng)在渲染視圖的時候如果發(fā)現(xiàn)opaque屬性的值是YES, 那么就會優(yōu)化一些渲染的過程, 提高性能. 所以盡量少用或不用透明圖層可以極大的提高渲染速度.
c.
保證UIImageView中顯示的圖片大小跟UIImageView的大小相同, 因為在運行中縮放圖片是以個會耗費資源的操作. 如果圖片是從遠端服務器加載是不能控制圖片大小的, 需要下載完成后馬上在子線程中執(zhí)行縮放的操作.
關于異步操作的優(yōu)化:
d.
如果cell中的內(nèi)容來自網(wǎng)絡或者遠端服務器, 一定要保證是異步加載, 并緩存請求到的結果. 避免阻塞和數(shù)據(jù)的重復請求.
e.
圖形界面的繪制盡量轉(zhuǎn)到異步操作, 這樣可以避免圖片的繪制會打斷用戶交互了
三. 關于XIB文件優(yōu)化:
f.
如果是復雜且需要高效的界面, 盡量將SB和XIB創(chuàng)建的界面改為代碼創(chuàng)建, 減輕系統(tǒng)需要進行XML轉(zhuǎn)碼操作的負擔.
四. 是內(nèi)存優(yōu)化.
a.
盡量保證一個XIB文件中只有一個視圖, 因為加載一個XIB的時候, 所有的內(nèi)容都被放在內(nèi)存里, 包括圖片素材, 如果有一個不會即刻用到的視圖, 那么就是在浪費我們寶貴的內(nèi)存了, 并且過于龐大的XIB會延長app的啟動時間, 所以沒有必要的話, 最好在SB中創(chuàng)建視圖.
b.
一定要處理內(nèi)存警告, 在收到內(nèi)存警告后,否則就可能會因為內(nèi)存占用過高出現(xiàn)閃退.