Ios 使用Restkit MainQueueManagedObjectContext-EXC_错误访问时发生奇怪的崩溃
有时,当我在RestKit MainQueueManagedObjectContext上调用saveToPersistent时,会出现以下错误,应用程序崩溃Ios 使用Restkit MainQueueManagedObjectContext-EXC_错误访问时发生奇怪的崩溃,ios,objective-c,core-data,restkit,restkit-0.20,Ios,Objective C,Core Data,Restkit,Restkit 0.20,有时,当我在RestKit MainQueueManagedObjectContext上调用saveToPersistent时,会出现以下错误,应用程序崩溃 CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextOb
CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. -[UIBarButtonItem controllerWillChangeContent:]: unrecognized selector sent to instance 0x21e70300 with userInfo (null)
[UIBarButtonItem controllerWillChangeContent:]: unrecognized selector sent to instance 0x21e70300 with userInfo (null)
似乎存在某种线程问题
我通过如下方法保存上下文:
- (BOOL)saveMainContext
{
__block BOOL contextSaved = NO;
[[[[CoreDataManager sharedInstance] objectStore] mainQueueManagedObjectContext] performBlockAndWait:^{
NSError *error = nil;
if ([[[[CoreDataManager sharedInstance] objectStore] mainQueueManagedObjectContext] saveToPersistentStore:&error]) {
contextSaved = YES;
}
}];
return contextSaved;
}
它在具有EXC\u BAD\u访问权限的saveToPersistent方法上崩溃。
我如何解决这个问题?我的NSFetchresultscontroller调用UIBarButtonItem上的方法的原因是什么 您的
saveMainContext
方法应该只从主线程调用,并且应该简单地实现为:
- (BOOL)saveMainContext
{
NSError *error = nil;
if ([[[[CoreDataManager sharedInstance] objectStore] mainQueueManagedObjectContext] saveToPersistentStore:&error]) {
contextSaved = YES;
} else {
NSLog(@"Save error: %@", error);
}
return contextSaved;
}
调用UIBarButtonItem
的实例表明存在内存管理问题,因为正在观察上下文保存的内容在释放之前没有删除自身。检查所有的观察者