iOS数据源同步解决方案及其利弊
2019-05-06 本文已影响0人
MT_suny
首先我们要明确一下为什么要处理数据源的同步问题,当我们开启线程处理数据源的时候,主线程的操作并没有记录在子线程中.这样会导致子线程处理完数据返回主线程刷新UI导致数据错乱.
以下是两种解决数据源同步的解决方案:
1.并发访问,数据拷贝原理图:

通过上图我们可以了解当主线程做了一次删除操作的时候,我们需要将这个操作记录下来.并且当子线程需要操作的时候需要操作一次主线程的删除操作,这样才能保住数据的正确性.
2.串行访问原理图:

串行访问的原理是通过GCD开辟一条串行队列.把数据操作的任务放到串行队列上去操作.这样可以同步主线程和子线程对数据源的操作.
以上的两种方式都能解决数据源同步问题.但是这两种解决方案也是存在一切问题的.
首先并发访问,数据拷贝顾名思义是要对操作进行记录并且拷贝到子线程中.这样需要开辟内存空间,对内存消耗较大.
其次串行访问,当线程有耗时操作是.就会导致对数据源的增删改查操作有延时.具体开发中怎么去选择,要具体问题具体对待.