有關UITableView滑動時卡頓的問題,目前了解到的一些原因主要是:1)主線程被阻塞(采用異步下載圖片可以解決),2)cell重用機制使用問題(一般情況都已注意cell的重用),但除了以上問題,我們在優化tableview的時候,還需要注意什么,怎樣才能提升tableview的滑動性能,另外,有什么工具可以定量的分析tableview的滑動性能,希望有這方面經驗的同學可以解答一下,多謝~
1 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
其實要解決TableView的性能主要是理解其原理。
首先TableView本身是一個滑動窗口,并不會一次實例化好所有的Cell,因為內存消耗過大,比如tableView:numberOfRowsInSection:返回1000,總不能實例化1000個CellView吧,這就是樓主說的第二個問題:Cell重用機制——一定要重用,且一定要正確的重用
Cell重用之后TableView就只實例化那么幾個屏幕可見的CellView(例如5個),當用戶滑動時反復的調用tableView:cellForRowAtIndexPath:來變更這幾個CellView上的內容以達到滑動效果(還有幾個其他的方法可以自己打log查看)。
所以對于滑動性能分析,樓主無需工具,只需自己NSLog一下方法執行時間即可完成滑動性能分析。
同樣要解決滑動性能問題,只要保證這幾個方法中的執行足夠快即可:要盡可能的優化,所有無關邏輯都盡量扔出去。
關于常見場景:大IO、復雜算法、大量創建對象、大量添加View等等都有可能消耗性能。不過常見的case一般都是IO,比如樓主說的下載圖片。
除了使用異步下載之外,還需要注意異步下載的狀態,因為建立連接也是需要消耗資源的,雖非當前線程資源,但整個設備的資源依然是有限的,如果你同時建立上百個異步下載連接(例如用戶滑動經過了上百條Cell),系統也會卡頓,這也是需要注意的
添加回答
舉報
0/150
提交
取消