メインスレッドに関連付けられた管理対象オブジェクトコンテキストがあり、メインスレッドを呼び出すと[mainContext performBlock:block]
します。それは同期的に実行されますか、それともまだスケジュールされて後で実行されますか?
質問する
676 次
1 に答える
3
あなたが意味していると仮定するとNSMainQueueConcurrencyType
(ではなくNSConfinementConcurrencyType
)、呼び出しperformBlock:
はのように動作dispatch_async
します。つまり、ブロックはキューに入れられ、すぐには実行されません。
これは簡単に確認できます。
NSLog(@"before block");
[self.managedObjectContext performBlock:^{
NSLog(@"in block");
}];
NSLog(@"after block");
これは(この順序で)印刷されます:
before block
after block
in block
ブロックを同期的に実行する必要がある場合はperformBlockAndWait:
、両方のキューベースの同時実行タイプに使用する必要があります。
于 2013-01-27T11:22:28.103 に答える