複数のManagedObjectContextsでCoreDataを使用する多くの例を見てきました(新しいiOS5 +の親/子の方法で)。たとえば、次のようになります。
//
// persistentStore (on disk)
// |
// persistentManagedObjectContext (exclusively for saving)
// |
// mainThreadManagedObjectContext (for managedObject's used on the mainThread)
// |
// childManagedObjectContext (created "on the fly" for background task, and destroyed when saving is done)
//
上記のこの3層のアプローチでは、子MOCで実行される各フェッチにより、読み取られたオブジェクトの少なくとも3つのコピーがメモリに保持され、各MOCに1つ(さらに、内部メッセージングではさらに多く)になると私は考えていますか? CoreDataはMOC間で使用します)?
一部のデータ(画像など)を読み取り、処理(サムネイルの作成など)を実行してデータベースに書き込むバックグラウンドタスクがあったが、UIを直接/即時に更新しない場合、このアプローチは正しいと思いますか?更新は不必要にメインコンテキストを通過し、したがってメインスレッドを通過し、UIのパフォーマンスに影響を与えるため、どちらも適切ではありません。