0

私がこれを行う場合:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
[self someMethod];
 });

そしてsomeMethod、これは次のとおりです。

-(void)someMethod{
  //doing stuff with no mention of GCD
 }

ディスパッチ キュー内で実行されますか、それとも、そのキュー自体は他のキューに何もディスパッチしないため、メイン スレッドでの実行をsomeMethod待機しますか?someMethodsomeMethod

4

1 に答える 1

4

メソッドは、呼び出し元のスレッドまたはキューで実行されます。したがって、バックグラウンド キューでデータを処理した後に UI を更新する場合は、メイン スレッドで UI の更新を明示的に実行する必要があります。

例えば:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
   [self someMethod];
});

- (void) someMethod{
    dispatch_async(dispatch_get_main_queue(), ^{
        // Update UI here
    });
}
于 2012-08-20T04:03:17.790 に答える