Ios NSManagedObjectContext崩溃(EXC#u BAD#u访问),但确保它可以';这不是我的错

Ios NSManagedObjectContext崩溃(EXC#u BAD#u访问),但确保它可以';这不是我的错,ios,swift,core-data,exc-bad-access,nsmanagedobjectcontext,Ios,Swift,Core Data,Exc Bad Access,Nsmanagedobjectcontext,我刚刚用Xcode运行时遇到了一个故障,我很确定这不可能是我的错 怎么会有坏的访问错误fetch是在它之前创建的,因此它必须存在于内存中,self是上下文本身(此方法在NSManagedObjectContext上是一个Swift扩展),而上下文是一个永久存在于应用程序中且不会发布的上下文。它已创建并存储在应用程序代理中 我怎样才能防止这种情况发生,因为我时不时地得到它,但它似乎并不正确 上下文是一个私有队列上下文,并且正在该队列中调用此方法(context.performBlock)如果我

我刚刚用Xcode运行时遇到了一个故障,我很确定这不可能是我的错

怎么会有坏的访问错误
fetch
是在它之前创建的,因此它必须存在于内存中,
self
是上下文本身(此方法在NSManagedObjectContext上是一个Swift扩展),而上下文是一个永久存在于应用程序中且不会发布的上下文。它已创建并存储在应用程序代理中

我怎样才能防止这种情况发生,因为我时不时地得到它,但它似乎并不正确


上下文是一个私有队列上下文,并且正在该队列中调用此方法(
context.performBlock

如果我的代码是在机器级别运行的,我会部分同意您的看法,但我正在一层接一层的基础和框架上编写,这些基础和框架不是我自己编写的。那些层可能包含你知道的bug!如果
fetch
明显存在,并且
self
中引用的对象在应用程序的生命周期中是持久的,那么第43行中的哪个地址可能无效?因此,“您犯了一个错误”是一个错误的陈述,如果这是一个框架错误,无论多么不可能。@gnasher729也许您可以提供一些指导来帮助我找到我犯的错误?您遇到了并发问题,相信我,我知道。这是一个巨大的麻烦。您没有在执行块中正确地包装这些命令,那么您可能会也可能不会错误地使用多个上下文。很难说没有看到方法被调用。检查:我想你会得到AllThatIsLeftusiOnour errors。这是我最喜欢的,但是我在开发过程中总是启用了
-com.apple.CoreData.ConcurrencyDebug
,它不会发出任何警告,我非常小心处理核心数据,确保所有工作都正确排队。这是一个非常复杂的应用程序,因此查找问题将是一场噩梦!您是否认为它在这个上下文中中断的事实意味着它在某种程度上与队列外部使用的上下文完全相同?如果是这样的话,搜索范围就会缩小。是的,我认为该方法调用不正确。一定是这样,但我想你是这么怀疑的。我在核心数据方面遇到了太多问题,但仍然不知道如何有效地跟踪这些问题。这段代码甚至可能不在应用程序崩溃的地方。但很可能是这样。是的,我认为您在队列操作中使用的上下文不正确。我不得不求助于创造一个新的私人环境,并在某些情况下使用它。