2016-09-28 8 views
1

私は、NSManagedObjectContextsを保存するときに、の電話番号NSManagedObjectContextperformBlockAndWaitにラップすることに気付きました。RestKitはperformBlockAndWait経由ですべてのNSManagedObjectContextを保存するのはなぜですか?

https://github.com/RestKit/RestKit/blob/development/Code/CoreData/NSManagedObjectContext%2BRKAdditions.m#L64

それは実際にはタイプMainQueueConcurrencyTypeNSManagedObjectContextはこのように保存されなければならない(それは通常タイプPrivateQueueConcurrencyTypeの別のNSManagedObjectContextの子コンテキストで管理し、親と子NSManagedObjectContextsの私の理解でいたものpersistentStoreCoordinatorに関連する)。私は、永続的なストア(すなわちディスク)への保存は長い操作であり、待つべきではなく、待つべきではないという考えを考えました。どこが間違っていますか?

答えて

0

ManagedObjectContextで行うことはすべて、そのコンテキストのディスパッチキューで行う必要があります。 performBlockまたはperformBlockAndWaitというブロックでそれを行うことが最も簡単な方法です。ブロックの結果に応じてメソッドの後ろにコードがある場合、performBlockAndWaitを使用します。 RestKitの場合のように、これらのブロックを古いCore Dataコードに追加する必要がある場合は、performBlockAndWaitでNSManagedObjectContext呼び出しをラップすることは、Core Dataコードをスレッドセーフにするのにあまり苦労しません。

関連する問題