解决加载 table 视图时偶尔发生的 Core Data 死锁

Solve a Core Data deadlock that happens occasionally when a table view is being loaded

我正在使用一个非常常见的核心数据栈。 子 Mocs -> Main Moc -> Background Moc -> PSC

我从很长一段时间以来一直面临核心数据死锁,当我点击我的 table 视图的一个单元格以打开另一个 table 视图时,屏幕会冻结,我的table 视图使用 FRC。查看线程,我的所有 3 个托管对象上下文似乎都处于死锁状态。我现在已经尝试多次调试它但无济于事。

线程 1:主要 Moc

线程 8:子 Moc

线程 10:背景 Moc

如有任何帮助,我们将不胜感激。

我认为当同时访问不同的持久存储(在我的例子中是 2 个)时,问题就会发生。第一个持久存储是通过 Background Moc 访问的,同时有一个通过与第二个持久存储相关的 Child Moc 流动的获取请求。

我没有从背景 Moc 发出有问题的第一个提取请求,而是将其移至其中一个子 Moc,并且解决了死锁。

我仍然不知道确切的原因,但我能够得到这个解决方法。

希望对您有所帮助。