我正在使用顯示用戶聯繫人的UITableView。對於一些擁有大量聯繫人的用戶(5000+聯繫人),tableview也有5000多行。uitableview reloaddata方法阻塞uithread
具有〜12k行的democase中的reloadData方法在設備上需要100ms。
這些100毫秒時,作者「的tableView:heightForRowAtIndexPath:」本身就需要30毫秒,但實際上只是:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row>50)
{
return 47
}
return 62;
}
這是由於這樣的事實,這就是所謂的1.2萬倍。
無論如何加快這一點?
你確定它的reloadData需要這麼長時間,而不是實際重新加載數據源嗎? Tableview不會爲它重用的所有數據加載單元格。你如何重新加載數據源? – Yan
查看文檔中的tableView:estimatedHeightForRowAtIndexPath:方法。爲了這個目的,它被添加到api中。 – rdelmar
@Yan是的,我確定,因爲我在樂器中檢查過它。 –