您当前的位置: 首页 >  ui

CoreData从后台线程读取数据仍然阻塞UI界面的原因及解决

发布时间:2022-05-10 09:26:23 ,浏览量:0

在这里插入图片描述

问题现象

大家都知道,使用CoreData读取(Fetching)大量数据会阻塞主线程,从而导致界面的卡顿。

所以,我们必须用私有队列 (privateQueueConcurrencyType) 类型的托管上下文 (NSManagedObjectContext) 在后台线程读取数据:

在这里插入图片描述

如上图所示,我们已经用(私有队列的)托管上下文在后台读取数据,但界面在读取时仍然会发生卡顿。

这属于CoreData使用中一个非常常见的误区,如果不是造成了卡顿(读取海量数据),大家可能都发现不了这个问题。

那么这是什么原因?又该如何解决呢?

别急,下面就让我们拨开迷雾,彻底搞清楚这个问题吧。

Let’s Go!

问题分析 1. CoreData后台读取数据的误区

CoreData中的托管对象无法保证线程安全。上面谈过,要想在后台线程读取数据,需要创建特殊的托管上下文:

let bgContext
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108180博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0711s