我有一个具有表视图的多线程应用程序。它在后台的不同线程上进行数据收集。问题是,当用户滚动表格时,数据收集速度减慢了75%。并且有很多数据要收集,所以如果可能的话,我想让表格滚动将数据收集速度降低不超过15%。
当用户将手指从屏幕上移开时,是否有一种方法可以重新绘制TableView?不要担心用户体验,让我担心。如果你有任何可以加速的想法,我想听听它们。
答案 0 :(得分:0)
当用户拖动时,您可以尝试从dequeueReusableCellWithIdentifier
返回nil。您可以通过调用self.tableView.dragging
或self.tableView.tracking
和self.viewTable.decelerating
来检查用户是否这样做(这可以确定拖动或曲目何时即将结束)。
答案 1 :(得分:0)
听起来你的瓶颈就是背景中的“数据收集”,所以你可能会考虑攻击它。在显示表视图控制器之前,您可以尝试预先获取大量数据并将其缓存在内存中。
如果特别复杂的话,您也可以尝试重新绘制单元格的一部分(例如,只显示文本而不是任何图像)。对于昂贵的操作,你可以执行延迟为0的选择器,这将把它扔到运行循环的下一个迭代(好的策略)。
你能想到的最好的事情就是使用Time Profiler运行仪器并攻击吸收最多CPU的东西。