ConcurrencyType NSPrivateQueueConcurrencyTypeを持つNSManagedObjectContextを作成しました。コンテキストを持つすべてのタスクに対してブロックAPIのみを使用する必要があることを読んでいます。実行ブロックのないNSPrivateQueueConcurrencyType
私の質問は、ブロックAPIを実行し、コンテキストでタスクを直接実行しないとどうなりますか?
ConcurrencyType NSPrivateQueueConcurrencyTypeを持つNSManagedObjectContextを作成しました。コンテキストを持つすべてのタスクに対してブロックAPIのみを使用する必要があることを読んでいます。実行ブロックのないNSPrivateQueueConcurrencyType
私の質問は、ブロックAPIを実行し、コンテキストでタスクを直接実行しないとどうなりますか?
ショート:しないでください。
長く:これはPrivateConcurrencyTypeバージョンNSManagedObjectContext
の内部実装によって異なります。私はあなたが1つのスレッドからのみそれを使用し、そのコンテキストから他のスレッドにオブジェクトを渡さない場合、はかもしれないと推測します。か否か。しかし、
異なるスレッドからこのコンテキストを使用する場合は、が確実に破損します()。いくつかのデータが無作為に消えたり再現したり(一度起こったこと)、何かがクラッシュしたり、ユニコーンがあなたのオフィスを襲うことがあります。だからちょうどしないでください
制限は廃止されました。残りについては、OPはこの助言に従うべきです。 performBlockなしでプライベートコンテキストを使用しないでください。最終的にデータが破損します。 –
@ MarcusS.Zarra、ありがとう、私はそれが推奨されていないことを知っていたが、廃止されたことを忘れてしまった。私はそれを使用しないでくださいとにかく:) –
FreeNickname