TableView 在 IOS App中應用極其廣泛。
TableView能表現的內容也很豐富多樣。因此TableView的效能最佳化,對我們App的使用者體驗很重要。
首先,UITableView 為了效能的最佳化,使用了複用Cell的機制。
TableViewCell的複用機制的基礎在於為TableViewCell 設定複用標示, reuserIdentifier.
TableView 存在兩個隊列: 可見Cell visiableCells 和 可重用的Cell reusableCell。
當初次建立TableView時,比如可見Cell為10個。則,建立10個Cell 載入到可見數組中。隨著介面的滑動,Cell滑出介面,則將其從可見數組中移除,將其添加至可複用的數組中。新的Cell滑入介面內時,則先查看可重用的數組中是否存在Cell。若存在,則使用可重用的Cell,並載入資料。
有了複用機制,可以大大減少記憶體的開銷。
TableView的效能最佳化:
1. Cell的構建: 如果原生態的UITableViewCell 能夠滿足介面的需求,就使用原生態的Cell。不需要再自訂Cell。
如果原生態的UITableViewCell 不能夠滿足需求,則需要考慮自訂Cell。
自訂Cell的時候,使用不透明視圖。
Cell中減少視圖的數量,減少不必要的繪製。
Cell中元素豐富時,可以考慮代碼繪製drawRect,而不是載入Xib。
可以根據內容,事先將高度緩衝下來。不要在計算高度的函數裡做過多的處理。盡量使取得高度的方法的時間複雜度為O(1)。
2. TableView 中圖片載入邏輯的最佳化:
a. 當 使用者手動drag table view 的時候, 會載入cell中的圖片。
b. 當使用者快速滑動的減速過程中,不載入過程中cell中的圖片(但文字資訊還是會被載入,只是減少減速過程中的網路開銷和圖片載入的開銷)
c. 在減速結束後,載入所有可見cell的圖片(如果需要的話)。
未完待續。。。