美文网首页知识点总结
iOS UITableView如何在多线程环境下修改或同步数据源

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

作者: 飞不越疯人院 | 来源:发表于2019-04-04 10:23 被阅读19次

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

    1 并发访问, 数据拷贝

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

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

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

    2 串行访问

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

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

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

    相关文章

      网友评论

        本文标题:iOS UITableView如何在多线程环境下修改或同步数据源

        本文链接:https://www.haomeiwen.com/subject/cpozbqtx.html