IOS面试题(TableView) ----- 数据源同步

2022-03-28  本文已影响0人  ShawnAlex

问题: 请说一下tableview的数据源同步问题, 都有哪些解决方法

或者问: 多线程对tableview同一共享数据源操作 都有哪些解决方法

我们看下一个例子, 方便理解理解这个问题

例子

针对tableview, 要同步进行操作, 数据变更怎么处理 ?

下面方法我都拿这个场景举例:

tableview 初始数据为[A, B, C], 主线程做个删除操作, 删除B。子线程做个请求加载, 加载[D, E, F]。最终目的以返回 [A, C, D, E, F] 刷新UI

方法一: 并发访问
方法一例子

很明显是错误的

稍微改动一下

并发访问解决方法

在删除操作之后, 我们做一个记录操作, 而在子线程数据返回之后, 我们同步操作, 已达到数据正常返回的目的

缺点: 记录操作会做额外的开销

方法二: 串行访问

串行访问是大家写业务最常用的方法

串行访问解决方法

由于是串行访问, 那么肯定有一串行队列

缺点: 如果子线程操作耗时情况下, 主线程的操作要一直延时等待

总结:

2种方法实际都各有利弊, 针对于不同场景使用不同方法

上一篇 下一篇

猜你喜欢

热点阅读