合併到多個線程這更多的是爲什麼這個工作,也不至於那種問題......的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],但我似乎無法弄清楚爲什麼它會使線程暫停。我能夠繼續在調試器中繼續前進......但我不明白爲什麼它以這種方式運行。
我認爲我做錯了什麼,我擔心我的新方法可能只是一個破解。
感謝您的幫助!