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在调度队列中运行,还是该队列等待someMethod在主线程上运行,因为someMethod它本身不向其他队列调度任何内容?

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 回答