偶尔我会收到这个错误:
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/