2017-10-06 83 views
0

我想在TableView中加載10k靜態記錄。花了30s-45s來渲染tableview。我該如何提高性能?10000數據UITableView性能

對延遲加載進行分析後,僅在從遠程服務器下載圖像時才發現相關搜索結果。

注:我曾嘗試加載在主線程,這使得該應用獲取冷凍

數據我有一次裝入的100個數據,當它滾動,我們可以加載其他100個數據的想法。但我不知道exacty如何實現此

...我已經尋找這些鏈接

Table View takes a lot of time to refresh after "reloadData()"

UITableView reloadData taking too much time

一切都沒有解決的問題

任何建議爲實現這一目標?

+1

你爲什麼不與[UITableViewDataSourcePrefetching嘗試](https://developer.apple.com/documentation/uikit/uitableviewdatasourceprefetching) –

+2

你是什麼意思_「渲染tableview」_需要30s-45s? tableview通常只顯示可見單元格,實際上它們的編號通常大約在5-15左右 - 不管您的_model_上是否有25或1M記錄。 – holex

+0

我只是調用10k數據重新加載tableview。它首先敲擊了「numberOfRowsInSection」,然後需要40秒才能轉到cellForRowAt indexPAth。方法cellForRowAt indexPA僅針對可見行調用,不需要時間 –

回答

8

UITableViewDataSourcePrefetching

預取,當我們需要從網上下載大量的模型(通常爲圖片或視頻文件),或從磁盤獲取非常有用。預取也爲我們提供了一些懶惰的方式來訪問數據模型:我們不必獲取所有數據模型,而只需要獲取所有數據模型,這些模型即將展示。這種方法減少了電池和CPU的消耗,從而導致更好的用戶體驗。

以下兩種方法處理的預取

public func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) 
optional public func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) 

你的問題太寬而不能回答,樣品你一步一步tutorial here

+0

不,我只是想裝載10k文本數據,這些數據已經被靜態地獲取並且可用。需要將近40秒才能重新加載桌面視圖 –

+0

@GobiM - 你的?是不同的,你在加載更多時間或初始時間時遇到問題 –