【发布时间】:2015-02-04 12:19:27
【问题描述】:
我正在使用线程在 coreData 中处理并发,我按照苹果的示例进行操作,链接在这里https://developer.apple.com/library/ios/samplecode/ThreadedCoreData/Introduction/Intro.html 我对这个示例项目没有什么疑问
我正在使用一个类调用 PullOperation,它是 NSOperation 的子类,所以当 pull 发生时,
我想通知我的主要 MOC,有关更改,以便更新并显示在 tableView 上
我想知道怎么做?
按照示例应用,我在 appdelegate.m 中编写了这段代码
- (NSManagedObjectContext *)managedObjectContext {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [NSManagedObjectContext new];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
// observe the ParseOperation's save operation with its managed object context
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:nil];
return _managedObjectContext;
}
// merge changes to main context,fetchedRequestController will automatically monitor the changes and update tableview.
- (void)updateMainContext:(NSNotification *)notification {
assert([NSThread isMainThread]);
[self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification];
}
// this is called via observing "NSManagedObjectContextDidSaveNotification" from our APLParseOperation
- (void)mergeChanges:(NSNotification *)notification {
if (notification.object != self.managedObjectContext) {
[self performSelectorOnMainThread:@selector(updateMainContext:) withObject:notification waitUntilDone:NO];
}
}
在这里我们可以看到合并变更的通知。
但是我的应用卡住了并且没有响应,并且我收到消息说应用由于内存问题而停止。
所以我想知道我哪里出错了。
请帮忙
问候 兰吉特
【问题讨论】:
-
请贴上你自己的代码,再贴更多的代码,你这里贴的代码好像没有问题
-
@CarmeloS,只是编辑问题
-
您好@CarmeloS,请检查已编辑的问题
-
请显示日志,这可能会有所帮助
-
@CarmeloS,没有日志,如果我只是在上述方法中添加这些通知行,我的应用程序就会停止
标签: ios multithreading core-data