メインスレッドにはManagedObjectContext
、バックグラウンドスレッド用にはNSOperation
を使用します。また、各ManagedObjectContext
は同じ永続ストアを共有します。コアデータを持つバックグラウンドスレッドでのフェッチ要求の使用
Core Dataを使用してテーブルビューにデータを取り込むため、メインスレッドでフェッチが発生する可能性があります。
バックグラウンドでは、画像の名前を格納するNSManagedObject
プロパティにアクセスする必要があります。次に、バックグラウンドスレッドは、これらのイメージを作成してキャッシュします。これがバックグラウンドスレッドを持つ主な理由です。
両方のスレッドが同時に永続ストアにアクセスしようとすると、両方のスレッドが同じストアドストアにアクセスしようとすると(ロックなど)危険がありますか?
確かに?私はリンゴのドキュメントでそれについて何も読んでいません。あなたの出所を教えてもらえますか? –
私は決してそれを文書で見つけたことはありません。経験が豊富で、長いデバッグセッションもありました。 2つの異なるスレッドが常にこの回答の同じNSPSC – amattn
サンプルコードに書き込むようにすれば、簡単に再作成することができます:http://stackoverflow.com/questions/5236860/app-freeze-on-coredata-save/5237031#5237031 – amattn