我一直在閱讀,如果您使用具有私有隊列併發類型的上下文,具有該上下文的FetchedResultsController也會在該私有隊列上調用其委託方法。 (例如在this SO answer中鏈接的here)。NSFetchedResultsControllerDelegate和PrivateQueueConcurrency
我測試過了,我的視圖控制器(FRC委託)正在主線程上接收這些調用。只是好奇,如果有人對此有明確的答案。
我在主線程上創建並調用MO上下文和FRC。我的-performBlock在上下文調用只做一些模型更改並保存 - 它們不會觸摸UI或向mainQueue發送任何東西
編輯:具體而言,下面的引用是正確的;即我們需要實現 使用調用主隊列
NSFetchedResultsControllerDelegate回調現在將來自於上下文的隊列中的FRC委託方法。你這樣做,結果任何用戶界面更新需要被分派到主隊列:
- (void)controllerDidChangeContent:(NSFetchedResultsController*) controller {
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[[self tableView] endUpdates];
}];
}
在你引用的問題中,它明確解釋說,只有當你在後臺上下文中執行FRC的提取時,**纔會在主線程中執行**。 – Mundi
是的,抓取和保存是在私有上下文中的-performBlock中完成的。我編輯,使我的問題更清晰。 – BoombaleOsby