ios - Xcode 多线程违规“留给我们的就是荣誉 cocoa ”

标签 ios objective-c xcode macos core-data

我在项目中使用了 coredata,有时(并非总是)它会崩溃,并收到屏幕截图中所示的错误。

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

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

enter image description here

最佳答案

“多线程违规”部分是一个很大的线索。另外,您似乎在不同的线程中做一些与 GCD 相关的事情。

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

一个常见错误(这里可能适用也可能不适用)是没有充分使用performBlock和/或performBlockAndWait。您需要对所有与核心数据相关的操作执行此操作,甚至是像读取托管对象属性的值这样简单的操作。

关于ios - Xcode 多线程违规“留给我们的就是荣誉 cocoa ”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575664/

相关文章:

ios - AV AuthorizationStatus Restricted 从未达到

ios - SpriteKit 中 SKLabelNode 的物理体?

iPhone UISearchBar View 没有立即更新?

ios - 如何通过编程创建的导航 Controller POP 查看 Controller

ios - 应用程序可以在Xcode中工作,但不能通过TestFlight吗?

ios - 从现有的 sqlite.db 读取数据正在模拟器上工作,但不是实际设备( Objective-C )

iphone - ios 6.0 应该自动旋转问题

objective-c - 如何使用 NSRegularExpression 删除字符串中的括号单词?

iphone - 迁移到通用应用程序 (iPhone/iPad)

ios - 使用 CryptoSwift 在 java 和 ios 中进行等效加密