Насколько я понял, операции GCD UI всегда должны выполняться асинхронно по основному потоку/основной очереди. Но следующий код, похоже, также работает без каких-либо проблем. Может кто-нибудь объяснить, почему? Я пропускаю 2 блока синхронно с dispatch_async. Один блок загружает изображение, а другой отображает его на экране.Выполнение обновлений пользовательского интерфейса на основном потоке синхронно из параллельной очереди
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
__block UIImage *image = nil;
dispatch_sync(concurrentQueue, ^{
/* Download the image here */
});
dispatch_sync(dispatch_get_main_queue(), ^{
/* Show the image to the user here on the main queue */
});
});