0

我创建了一个访问数据存储并返回表示Core数据实体的对象的单例类。在普通线程中这很好,但我担心从后台线程上运行的另一个类访问此单例方法,因为后台线程将使用其自身的管理对象上下文副本运行。后台单线程数据存储线程

当试图从后台线程调用单例时,是否需要创建一个新的单例实例并传入后台线程的托管对象上下文的副本,或者我可以安全地访问单例方法并允许它使用它从应用程序代理内部检索的共享托管对象上下文?

+0

“单身人士的新鲜事例”这是怎么发生的? – Abizern

+0

Instanciating通过初始化事件的单身人士,它给你一个非单身副本 –

+0

那么有一个单身人士有什么意义?如果你打算在任何时候创建你自己的产品 - 首先有一个单身人士有什么意义? – Abizern

回答

2

让你的数据管理类使所有相关核心数据调用与performBlock:performBlock:andWait:

这样的调用将始终在一个线程安全的方式进行。

然而,就个人而言,我通常编写数据管理器,以便在主线程上调用它,并且它负责在任何线程上进行任何进一步调用。

+0

如果在主线程上执行该操作,则不要你得到UI阻塞? –

+0

如果数据管理器在后台线程上进行实际调用,则不应该如此。我的观点是你有一个数据管理器对象。应该由该对象决定在前台线程上执行后台操作,因为这是最有效的。 – Abizern

+0

我会诚实的。我从未考虑过这种方法。我目前从视图控制器启动后台线程,并从中调用数据管理器。我感谢你的建议,消化这个想法并评估它需要一段时间,所以我会将你的答案标记为正确的答案,然后离开并考虑这个问题。谢谢 。 –