Ios 使用Restkit MainQueueManagedObjectContext-EXC_错误访问时发生奇怪的崩溃

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

有时,当我在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 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
的实例表明存在内存管理问题,因为正在观察上下文保存的内容在释放之前没有删除自身。检查所有的观察者