有时我会收到此错误:

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/

10-10 14:21