async/await структурирует асинхронность с отменой и акторами; GCD — низкоуровневые очереди. Часто concurrency сверху, GCD в legacy.
Разбор
- URLSession.data(for:) удобен с await.
- MainActor заменяет многие DispatchQueue.main.async.
- Смешение callbacks и Task без дисциплины даёт гонки.
- GCD всё ещё нужен на собеседованиях и в старом коде.
Итог
Concurrency — модель по умолчанию; GCD — фундамент и legacy.