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

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

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

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

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

解决办法如下

一,并发访问,数据拷贝

iOS 数据源同步问题 1.jpeg

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

二,串行访问

iOS 数据源同步问题 2.jpeg

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

三,利弊

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

原文作者:xiaoxiaobukuang

相关文章

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

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

  • ios Ui数据源同步问题

    在子线程网络请求的过程中,用户执行在主线程的删除操作,引发的请求网络后刷新UI而删除数据还存在的问题1.并发访问,...

  • IOS 数据源同步问题方案

    目的 解决UI刷新错乱的问题 解决方案 1.并发访问 数据拷贝 2.串行访问 并发访问 数据拷贝 也就是说 数据拷...

  • UI数据源同步

    数据源同步问题多线程对共享数据的访问,需要考虑数据源的同步问题,如何解决tableView在多线程环境下的修改或者...

  • UI主要技术

    UITableView重用机制 数据源同步问题例如:ui显示数据源请求来的数据,删除某行后,子线程请求数据又同步到...

  • Flutter_blue使用

    1、Android 使用问题 解决办法 2、iOS 使用问题 解决办法(参考链接:https://blog.cs...

  • 02-UI视图

    UI视图内容 UITableView重用机制数据源的多线程操作(数据源同步问题) 事件传递&视图响应 视图显示原理...

  • iOS面试题

    一.UI相关 1.UITableView相关 (1).重用机制 (2).数据源同步问题(多线程下修改数据源) 2....

  • storm 问题总结

    问题1: host没同步,机器之间通信有问题 解决办法:同步hosts即可 问题2: zk连接数限制 任务跑了一段...

  • UI数据源同步问题

    如何解决在子线程网络请求的过程中,用户执行在主线程的删除操作,引发的请求网络后刷新UI而删除的数据还存在问题? 1...

网友评论

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

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