Xcode多线程违规"留给我们的是荣誉可可"

时间:2015-11-06 21:02:18

标签: ios objective-c xcode macos core-data

我在我的项目中使用了coredata,有时候,并非总是如此,它崩溃了,我得到了错误,如屏幕截图所示。

我正在使用类似于https://developer.apple.com/library/watchos/documentation/Cocoa/Conceptual/CoreData/Concurrency.html

的coredata

有人可以帮助我理解这一点,并指导我解决问题。

enter image description here

1 个答案:

答案 0 :(得分:2)

“多线程违规”部分是一个很大的线索。事实上,你似乎在不同的线程中做了与GCD相关的事情。

核心数据不是线程安全的。您无法在一个线程上获取托管对象并在另一个线程上使用它。由于您没有发布任何代码,因此无法确切地说明在这种特定情况下出了什么问题。您应按照this blog post中的说明开启com.apple.CoreData.ConcurrencyDebug,这样可以帮助您缩小崩溃的原因。

常见的错误,可能会或可能不会适用于此错误,但未使用performBlock和/或performBlockAndWait。您需要为所有与Core Data相关的操作执行此操作,甚至可以像读取托管对象属性的值那样简单。