0

我以为我的情况很简单,但是经过一整天的搜索,我不确定我是否有答案!

我正在使用 CoreData(通过实际使用 RestKit 和[RKObjectManager sharedManager].objectStore)。我保存数据以仅存储在主线程上。虽然我有很多从数据库读取数据的后台线程。NSManagedObjectContext如果主线程(带有 main )将数据保存到数据库,我找不到任何通知这些后台线程的好方法。

我看到的唯一方法是保留所有后台线程的列表,并在主线程上处理时NSManagedObjectContexts发送它们。mergeChangesFromContextDidSaveNotificationNSManagedObjectContextDidSaveNotification

这是处理这种情况的正常方式吗?我有一种感觉,这不是由于在多线程环境中管理这种缓存可能出现的潜在问题。

4

1 回答 1

0

没有细节很难理解发生了什么,但是是的,NSManagedObjectContextDidSaveNotification在后台线程中使用。

但是要小心,如果你创建了很多线程来监听变化,电池可能会很快下降。

根据我的经验,Core Data 中的线程应该按如下方式使用:创建一个或多个线程,在共享持久存储协调器中执行某些请求。当线程完成停止(删除)它们。这种机制允许您将数据加载到存储协调器的缓存中,从而加快主线程中执行的未来请求。

希望有帮助。

PS 我不知道 RestKit 如何与 Core Data 一起工作。

于 2012-12-27T11:45:31.173 回答