知识点总结

iOS UITableView如何在多线程环境下修改或同步数据源

2019-04-04  本文已影响19人  飞不越疯人院

问题场景: 删除tableview的数据源的一条数据时又触发了加载更多, 这样的话删除和加载更多会同时访问和修改数据源, 这时如何处理?

1 并发访问, 数据拷贝

假设删除数据在主线程, 加载更多在子线程A;

  1. 在删除数据之前做数据copy到加载更多的A线程中去. 并记录需要删除的数据;
  2. 主线程删除需要删除的数据并刷新;
  3. A线程中, 完成加载更多后,删除需要删除的数据然后转到主线程刷新UI;

缺点:需要copy, 内存开销大;

2 串行访问

假设删除数据在主线程, 加载更多在子线程A, 串行同步队列B;

  1. 将加载更多拿到的数据和需要删除的数据都放到队列B中;
  2. 串行队列中,同步执行; 加载更多和删除都完成后转到主线程刷新UI;

缺点:串行队列同步执行, 如果删除或者加载更多都很耗时的话整个过程会比较慢;

上一篇下一篇

猜你喜欢

热点阅读