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

Objective c 从GCD队列中调用另一个方法,objective-c,multithreading,grand-central-dispatch,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在主线程上运行,因为someMeth

如果我这样做:

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

方法在调用它们的线程或队列上执行。因此,如果希望在处理后台队列上的数据后更新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
    });
}

方法在调用它们的线程或队列上执行。因此,如果希望在处理后台队列上的数据后更新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
    });
}

someMethod
不会在主线程上运行,也不会等待主线程上的任何操作完成。它将在具有高优先级的不同线程中运行。
someMethod
不会在主线程上运行,也不会等待主线程上的任何操作完成。它将在另一个具有高优先级的线程中运行。谢谢。这对我很有帮助:)谢谢。这对我很有帮助:)