当我在0000
的私人队列中调用save()
时,我的应用程序(单元测试)停止运行,该队列来自单独的后台队列。它是一个普通的Core Data堆栈(带有用于单元测试的内存持久存储)。
私有队列上下文的重点不在于您不应该关注操作来自哪个队列?我该如何解决这个问题?
我无法单独重现它,但这里是我的设置的粗略概念(伪Swift,跨多个类的压缩调用):
NSManagedObjectContext
答案 0 :(得分:0)
这可能由于几个原因而发生,但我们无法从提供的代码中推断出任何原因。幸运的是,应该相当容易调试,只需在死锁(最有可能)发生后暂停调试器,看看还在等什么。它可能是一个融合僵局的背景,我会把钱投入其中。
答案 1 :(得分:0)
我意识到造成僵局的原因。我正在使用一个调度组来锁定主线程,显然当子上下文保存到其父上下文(主队列上下文)时,这会导致死锁。