我有一个与xmpp兼容的IM应用程序。并使用coreData在本地保存消息。
有时,保存时会出现此错误。我在网上搜索后发现:
我在Xcode8 / ios10上遇到了同样的问题。问题是由于在以下方法中调用了将核心数据上下文保存起来。
- (void)controllerDidChangeContent:(NSFetchedResultsController*)controller {
[self methodCallingSaveContext];
}
methodCallingSaveContext / 0调用保存核心数据上下文。为了中断递归调用,我以以下方式重写了该方法:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
dispatch_async(dispatch_get_main_queue(), ^{
[self methodCallingSaveContext];
});
}
所以,我尝试了dispatch_async。但是,使用这种方法,如果客户端同时接收到如此多的消息,则应用程序将崩溃。因为线程很多。
我该怎么办?