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