ios - 调用 managedObjectContext 保存时出现 EXC_BAD_ACCESS

标签 ios core-data exc-bad-access

偶尔我会收到这个错误:

EXC_BAD_ACCESS Code: KERN_INVALID_ADDRESS at 0x13421772123

它发生在下面的 save: 行中(在 CoreDataController 单例类中)

    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;

    if (managedObjectContext != nil) {
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        }
    }

我知道这不是很多代码,但根据经验,是否存在导致此问题的常见原因,以及是否有任何方法可以防止此问题导致应用程序崩溃?

最佳答案

如果 managedObjectContext 是主上下文,那么你应该在主线程中调用它,尝试用下面的代码包装它,以防你在后台线程中调用它

NSManagedObjectContext *managedObjectContext = self.managedObjectContext;

if (managedObjectContext != nil) {
    [managedObjectContext performBlockAndWait:^{
        NSError *error = nil;
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        }
    }];
}

关于ios - 调用 managedObjectContext 保存时出现 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017351/

相关文章:

ios - 关闭 UITextField 的键盘

ios - 如何放大或缩小 uipageviewcontroller?

ios - 无法将容器的架构部署到生产环境 - CloudKit、CoreData

iphone - 如何在 iOS 框架中添加核心数据类

ios - Objective c - 尝试在队列中复制 NSArray 时获取 exc_bad_access

javascript - FB.login 不触发 HTML5 iOS 网络应用程序

ios - 每隔一段时间播放一次UILocalNotification声音

ios - Xcode-beta 8.无法创建核心数据

ios - IMP methodForSelector EXC_BAD_ACCESS 崩溃

swift - 无法调试 EXC BAD ACCESS 代码 1