- (voID) registerContextDIDSaveNotificationForManagedobjectContext: (NSManagedobjectContext*) moc { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addobserver:self selector:@selector(mergeChanges:) name:NSManagedobjectContextDIDSaveNotification object:moc];}- (voID)mergeChanges:(NSNotification *)notification { //AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; NSManagedobjectContext *mainContext = self.managedobjectContext; // Merge changes into the main context on the main thread [mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDIDSaveNotification:) withObject:notification waitUntilDone:YES];}解决方法 注册NSManagedobjectContextDIDSaveNotification的线程必须是您调用的线程[mainContext mergeChangesFromContextDIDSaveNotification:notification].
例如:在线程B中发生更改时注册线程A NSManagedobjectContextDIDSaveNotification然后您收到通知,但是,这些更改与线程B相关联,您无法直接访问更改,因此您将通知作为参数传递给mergeChangesFromContextDIDSaveNotification: (您将其发送到线程A上的上下文)以合并这些更改.
所以请检查它们是否在同一个线程上?
总结以上是内存溢出为你收集整理的ios – 使用mergeChangesFromContextDidSaveNotification:saveNotification我没有在主线程中显示更改全部内容,希望文章能够帮你解决ios – 使用mergeChangesFromContextDidSaveNotification:saveNotification我没有在主线程中显示更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)