如果我这样做:
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
本身不会向其他队列调度任何内容?
答案 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
});
}