同步

来源:3-6 UI绘制原理&异步绘制 相关面试问题

潜心001

2018-09-08

老师你好,tableview数据源同步,这里我们在子线程或者主线程公用一个数据源不可以吗?为什么要把数据源拷贝一份到子线程,而导致删除操作后数据不同步的问题呢。
我感觉这里我们是不是可以在这样来做:主、子线程公用一个数据model。model里面有一个版本号,初始值都是0,每次我们修改model,都把这个值+1,。然后当我们子线程做预排版之前,先把这个版本号记录下来,在做完预排版等一系列耗时操作后,再读取一下公用model的版本号,如果和刚才记录的不一致,那么说明我们的model已经被修改了,这时候不论我们需要记下当前版本号,再排一下版,然后查看一下我们刚才记录的model版本号和现在公用得model版本号码是不是一直,如果不一致则重复刚才的操作,如果相同则从子线程回到主线程执行刷新操作。ps:这里我们操作的数据model和预排版操作产生的framemodel注意下多线程中数据冲突的问题即可

写回答

1回答

于海

2018-09-08

课程当中有给出解决同步的2个方案,除了这种数据源拷贝,另外一个方案就是公用一套数据 加一个串行队列保证同步,这是比较简单得一个方案

0
1
潜心001
你好,什么情况或者场景下,我们必须把数据源拷贝出来一份呢,或者说课程中讲的第一种方案具体什么场景下会用到呢,可否举个例子,谢谢了哈
2018-09-08
共1条回复

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程