UITableView insertRowsAtIndexPaths:WithRowAnimation不冻结用户界面
我试图了解什么是最好的做法,当我使用UITableView
与大量的行插入时,表是可见的。
这是我的行为:
我有一个UITableView
和一个线程,试图插入一个数据到这个表中。 我认为做一个[UITableView reloadData]
是性能方面的一个糟糕的解决scheme,我知道UIKit
操作是在主线程进行,因此,当数据源更新完成时,我试图发送一个NSNotification
使UITableView
更新操作(beginUpdate – insertRowAtIndex – endUpdate)在主线程上,但是这种技术冻结了用户界面。 我必须使用1000+以上的行数。
有人已经解决了这个问题? 是否可以使用GDCasynchronous和同步? 如果是的话,怎么样? 提前致谢。
你是否这样尝试:
dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView beginUpdates]; [self.tableDatalist insertObject:obj atIndex:index]; [self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationRight]; [self.tableView endUpdates]; });
- 通过GCD延迟睡眠()
- Swift 3:DispatchQueue.main.async {}和DispatcQueue.main.async之间的区别(execute:{})?
- dispatch_set_target_queue如何工作?
- 使用dispatch_async或performSelectorOnMainThread在主线程上执行UI更改?
- 如何在asynchronous块内为dispatch_group_async调度dispatch_group_wait
- 澄清dispatch_queue,重入和死锁
- 是否有必要在GCD下创build一个autorelease池?
- dispatch_async超时方法调用
- 在iOS4设备上发送大量数据的最佳做法?