Вопрос проверяет знание основных инструментов асинхронности в iOS и умение выбирать подходящий механизм.
iOS предоставляет GCD, OperationQueue и async/await. GCD подходит для простых задач и низкоуровневого контроля. OperationQueue удобна для сложных сценариев с зависимостями и отменой. async/await — современный и читаемый способ работы с асинхронным кодом. Часто используется комбинация этих механизмов.
Асинхронность — базовая необходимость в iOS, так как любые тяжелые операции нельзя выполнять на главном потоке.
Перед выбором важно понимать уровень контроля и сложности задачи.
Низкоуровневый механизм работы с очередями.
Используется для:
фоновых задач;
синхронизации потоков;
простых асинхронных операций.
Пример:
DispatchQueue.global().async {
let data = loadData()
DispatchQueue.main.async {
updateUI(data)
}
}
Плюсы:
простота;
высокая производительность.
Минусы:
нет встроенной отмены;
сложнее управлять зависимостями.
Более высокоуровневый API.
Преимущества:
отмена операций;
зависимости между задачами;
приоритеты.
Подходит для сложных сценариев.
Современный подход, встроенный в Swift.
Плюсы:
читаемый код;
поддержка отмены;
меньше callback-ада.
Пример:
let result = try await fetchData()
Минусы:
требует iOS 13+ (полноценно — 15+);
не всегда подходит для legacy-кода.
Выбор механизма зависит от задачи: GCD — для простых операций, OperationQueue — для управляемых сценариев, async/await — для современного и чистого асинхронного кода.