亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎樣才能提升tableview的滑動性能呢?需要注意什么?

怎樣才能提升tableview的滑動性能呢?需要注意什么?

繁華開滿天機 2023-04-17 21:17:23
有關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),系統也會卡頓,這也是需要注意的


查看完整回答
反對 回復 2023-04-20
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號