【发布时间】:2013-07-09 22:14:48
【问题描述】:
我已经阅读了许多推荐在多线程中使用以下模式的核心数据的博客。
但问题是,如果在应用程序启动时我必须加载大量记录,我必须使用 NSFetchdResultsController 来获取 CoreData 中的所有记录。因为它将在主线程(main moc)中运行,它会阻塞主线程吗?如果我想获取一些记录,我可以使用 Temporary Background MOC 来获取吗?以及怎么做?
【问题讨论】:
-
如果有东西在主线程上运行,那么是的,它会阻塞 UI,但你可以从 bg 线程上的核心数据中获取结果。
-
如何在后台线程中获取结果并通知主moc?
-
使用 GCD 有很多关于这方面的教程,但是在使用线程和 CoreData 时必须非常小心 ManagedObjectContext。基本上每个线程都有自己的托管对象上下文,您可以在后台线程上获取/处理数据,然后将结果发布到主线程上。