マルチスレッドアプリでは、メインスレッドと1つ以上のバックグラウンドスレッドが、コアデータストアの情報に同時にアクセス、フェッチ、変更する場合があります。スレッドごとに、新しいを作成していNSManagedObjectContext
ます。ただし、の各インスタンスはNSManagedObjectContext
同じ `NSPersistentStoreCoordinator'インスタンス(シングルトンの他の場所に格納されている)を使用します。
私の質問は、の各インスタンスのマージポリシーに関するものですNSManagedObjectContext
。バックグラウンドスレッド()に1つのマージポリシーを設定し、メインスレッドにNSMergeByPropertyStoreTrumpMergePolicy
別のポリシー( )を設定した場合、本質的な利点はありますか?NSMergeByPropertyObjectTrumpMergePolicy
私のNSMangagedObjectContext
ゲッターには、次の条件があります。
if ( [NSThread isMainThread] ) {
[_context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
} else {
[_context setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];
}
ありがとうございました。
編集:それは必要ですか?両方のタイプのスレッドについて、デフォルトで一方のポリシーを他方よりも優先する必要がありますか?