以前は、 Apple askとして coredata をNSManagedObjectContext
スレッドごとに 1 つ使用NSNotificationCenter
し、 を観察してからNSManagedObjectContextDidSaveNotification
変更を元にマージしていました。Apple は、サンプル コードで正しい方法を示しています。
ただし、これは少し冗長であり、機能させるには大量のコードを作成する必要があります。iOS 5 には、新しいメソッドperformBlock:
と. すべてのスレッドに1 つのスレッドを渡したり、すべてのコアデータ関連コードを使用またはラップしたりできるようになりました。これははるかに簡単で頭痛の種が少ないはずですが、Apple 自身でさえ、この新しい方法についてはあまり話さなかったようです。 iOS ドキュメントの「Concurrency with Core Data」の章と「ThreadedCoreData」サンプル コードでは、スレッドごとに 1 つを推奨しています。performBlockAndWait:
NSManagedObjectContext
NSManagedObjectContext
performBlock:
performBlockAndWait:
NSManagedObjectContext
だから私は疑問に思ってperformBlock(AndWait):
います、人々がそれを使わないようにするための欠点はありますか? または、私が言った「新しい方法」は単に悪い設計ですか?