美文网首页
iOS 数据源同步问题解决办法

iOS 数据源同步问题解决办法

作者: iOS三年 | 来源:发表于2020-12-01 15:19 被阅读0次

    当我们开启子线程处理数据源的时候,主线程的操作并没有记录在子线程中。这样就会导致子线程处理完数据返回主线程刷新UI后数据错乱。

    例:在tableView中显示新闻数据和广告,子线程进行网络请求,数据解析等操作的同时。主线程中删除了广告,并更新UI。然后子线程处理完数据,最终也在主线程中更新UI,子线程没有记录主线程的删除操作,导致数据源没有同步的问题。

    解决办法如下

    一,并发访问,数据拷贝

    iOS 数据源同步问题 1.jpeg

    通过上图我们可以了解当主线程做了一次删除操作的时候,我们需要将这个操作记录下来,并且当子线程需要操作的时候进行一次主线程的删除操作,这样才能保证数据的正确性。

    二,串行访问

    iOS 数据源同步问题 2.jpeg

    串行访问的原理是通过GCD开辟一条串行队列,把数据操作的任务放到串行队列上面操作,这样可以同步主线程和子线程对数据源的操作。

    三,利弊

    以上两种方式都能解决数据源同步问题,但是这两种解决方案也是存在一定问题的。
    首先并发访问数据拷贝,顾名思义是要对操作机型记录并拷贝到子线程中,这样需要开辟内存空间,对内存消耗较大。
    其次串行访问,当线程有耗时操作时,就会导致对数据源的增删改查操作有延时。

    原文作者:xiaoxiaobukuang

    相关文章

      网友评论

          本文标题:iOS 数据源同步问题解决办法

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