UITableView在用户滚动时无法加载新状态问题及解决方案
UITableView滚动状态下更新异常问题
问题表现
- 执行数据更新操作时,若用户未滚动tableview,所有功能运行正常
- 若用户正在滚动、或手指正停放在tableview上,更新操作不会触发任何动画,数据差异也无法展示
- 控制台未输出任何报错
所用更新代码
var snapshot = tableViewDataSource.snapshot() snapshot.deleteAllItems() snapshot.appendSections([.conversation]) snapshot.appendItems(conversationList, toSection: .conversation) tableViewDataSource.apply(snapshot)
疑问
上述现象是否属于UITableViewDiffableDataSource的预期行为?
已排查解决结论
该问题与UITableViewDiffableDataSource无关,根因为先后从两个不同线程访问Realm导致结果不一致,其中一个线程为主线程,滚动操作会占用主线程资源进而触发竞态条件。
内容的提问来源于stack exchange,提问作者metinn
相关产品推荐
相关产品推荐

