2016-08-03 2 views
0

CoreDataを使用していますが、非同期フェッチ要求を作成しようとしています。その方法は、同様に動作するかどうか 私は、なぜ私はそのような場合"performBlock"メソッドはいつ使用しますか?

[managedObjectcontext performBlock:^{ 
    [managedObjectcontext executeRequest:asyncFetch error:&err]; 
}]; 

に「performBlock」メソッドを使用する必要がありますしてくださいEXPLAIN?

[managedObjectcontext executeRequest:asyncFetch error:&err]; 

「performBlock」で最初のものを使用した場合のメリットは何ですか?

+0

コアデータスレッドのデバッグを有効にしてください – Wain

答えて

2

performBlock:とperformBlockAndWait:は、NSPrivateQueueConcurrencyTypeまたはNSMainQueueConcurrencyTypeを使用してMOCが初期化されたかどうかにかかわらず、NSManagedObjectContextにメッセージを送信するために使用されます。これらのコンテキストタイプのいずれかを使って何かを行う場合は、ブロックで行います。

performBlock:ブロックをバッキングキューに追加し、独自のスレッドで実行するようにスケジュールします。このブロックがすぐに戻るために、これを長い永続操作に使用することもできます

performBlockAndWait:ブロックをバッキングキューに追加し、独自のスレッドで実行するようにスケジュールします。ただし、ブロックの実行が終了するまではブロックは戻らないため、ブロッキング呼び出しです。

+0

私は詳細を学ぶ必要があるので、参照やリンクを挙げてください。 –

+2

アップルのドキュメントhttps://developer.apple.com/library/ios/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/を読むことができます。また、http://quellish.tumblr.com/post/93355099502/performblock-vs-performblockandwaitをお勧めします – Kunal

関連する問題