从GCD队列中调用另一个方法

时间:2012-08-20 03:54:02

标签: objective-c multithreading grand-central-dispatch

如果我这样做:

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本身不会向其他队列调度任何内容?

1 个答案:

答案 0 :(得分: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
    });
}