Ios 解决在加载表视图时偶尔发生的核心数据死锁

Ios 解决在加载表视图时偶尔发生的核心数据死锁,ios,multithreading,core-data,deadlock,nsmanagedobjectcontext,Ios,Multithreading,Core Data,Deadlock,Nsmanagedobjectcontext,我使用的是一个非常通用的核心数据堆栈。 子Moc->主Moc->后台Moc->PSC 很长一段时间以来,我一直面临一个核心数据死锁,当我点击表视图的一个单元格打开另一个表视图时,屏幕将冻结,我的两个表视图都使用FRC。从线程的角度看,我的所有3个托管对象上下文都处于死锁状态。我已经试过多次调试,但都没有用 线程1:主Moc 线程8:儿童Moc 线程10:背景Moc 任何帮助都将不胜感激 我认为问题发生在并发访问不同的持久存储时(在我的例子中是2个)。第一个持久性存储通过后台Moc访问,同时有

我使用的是一个非常通用的核心数据堆栈。 子Moc->主Moc->后台Moc->PSC

很长一段时间以来,我一直面临一个核心数据死锁,当我点击表视图的一个单元格打开另一个表视图时,屏幕将冻结,我的两个表视图都使用FRC。从线程的角度看,我的所有3个托管对象上下文都处于死锁状态。我已经试过多次调试,但都没有用

线程1:主Moc

线程8:儿童Moc

线程10:背景Moc

任何帮助都将不胜感激


我认为问题发生在并发访问不同的持久存储时(在我的例子中是2个)。第一个持久性存储通过后台Moc访问,同时有一个获取请求通过与第二个持久性存储相关的子Moc传递

我没有从后台Moc发出第一个有问题的fetch请求,而是将其移动到一个子Moc,死锁得到了解决

我仍然不知道确切的原因,但我能够找到解决办法


希望这能有所帮助。

我发现问题发生在并发访问不同的持久存储时(在我的例子中是2个)。第一个持久性存储通过后台Moc访问,同时有一个获取请求通过与第二个持久性存储相关的子Moc传递

我没有从后台Moc发出第一个有问题的fetch请求,而是将其移动到一个子Moc,死锁得到了解决

我仍然不知道确切的原因,但我能够找到解决办法


希望这有帮助。

嗨,你找到解决办法了吗?我有一个非常类似的问题,但我无法调试它…@ryancrunchi我已经回答了我自己的问题。请参考答案。嗨,你找到解决办法了吗?我有一个非常类似的问题,但我无法调试它…@ryancrunchi我已经回答了我自己的问题。请参考答案。