【发布时间】:2021-10-08 15:48:09
【问题描述】:
已解决:这与 UITableViewDiffableDataSource 无关。问题是从 2 个不同的线程按顺序访问领域并且没有得到一致的结果
其中一个线程是主线程,并且滚动以某种方式使主线程忙碌并触发了竞争条件
如果用户在更新时不滚动表格视图,一切正常。
如果用户正在滚动或只是将手指放在 tableview 上,则更新时不会发生动画并且不会显示差异。 我在控制台中没有收到任何错误
数据更新代码如下:
var snapshot = tableViewDataSource.snapshot()
snapshot.deleteAllItems()
snapshot.appendSections([.conversation])
snapshot.appendItems(conversationList, toSection: .conversation)
tableViewDataSource.apply(snapshot)
这是某种预期的行为吗?
【问题讨论】:
-
为什么代码会在用户“滚动”时运行?
-
当用户阅读并触摸tableview时,可能会出现新消息,我需要更新。在这种情况下,我不关心动画,但新消息没有出现。即使新状态包含它
-
为什么不等到滚动/手指没有发生再更新?这就是我的观点。这本身并不会神奇地发生。你正在做。好吧,不要。
-
我所做的“解决方法”修复,等待。但我不认为这是我应该做的。因此,我问这是预期的行为吗?如果它记录在任何地方,那将有很大帮助
标签: ios swift uitableview realm uitableviewdiffabledatasource