合并到多个线程这更多的是为什么这个工作,也不至于那种问题......的NSManagedObjectContext保存/通过notifcation中心问题
我使用CoreData在多个线程。我正在催生关闭主线程的两个线程,他们都进行了类似的电话:
id observerObject = [notificationCenter addObserverForName:NSManagedObjectContextDidSaveNotification
object:secondManagedObjectContext
queue:nil
usingBlock:^(NSNotification *saveNotification) {
dispatch_async(dispatch_get_main_queue(), ^{
[mainThreadManagedObjectContext mergeChangesFromContextDidSaveNotification:saveNotification];
});
}];
[secondManagedObjectContext save:nil];
[notificationCenter removeObserver:observerObject
name:NSManagedObjectContextDidSaveNotification
object:syncManagedObjectContext];
这似乎很好地工作,但以前我与通知中心这样做的,有一些问题:
id observerObject = [notificationCenter addObserverForName:NSManagedObjectContextDidSaveNotification
object:secondManagedObjectContext
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *saveNotification) {
[mainThreadManagedObjectContext mergeChangesFromContextDidSaveNotification:saveNotification];
}];
这有时会起作用,但有时XCode会在启动时暂停并在呼叫中放下一个绿色断点,并列出线程及其编号,但不会出现错误。 (注意:如果我产生两个或更多线程,则只会出现此问题)。
罪魁祸首似乎是:[NSOperationQueue mainQueue],但我似乎无法弄清楚为什么它会使线程暂停。我能够继续在调试器中继续前进......但我不明白为什么它以这种方式运行。
我认为我做错了什么,我担心我的新方法可能只是一个破解。
感谢您的帮助!