1 回答

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