Вопрос проверяет знание основных механизмов конкурентного выполнения задач в iOS.
В iOS есть несколько инструментов для работы с многопоточностью. Основные — это GCD, OperationQueue, Thread и async/await. GCD используется чаще всего для работы с очередями и потоками. OperationQueue даёт более высокий уровень абстракции. async/await упрощает асинхронный код и делает его читаемым.
iOS предоставляет несколько уровней абстракции для работы с многопоточностью — от низкоуровневых до высокоуровневых.
Перед списком важно отметить, что выбор инструмента зависит от сложности задачи.
Grand Central Dispatch (GCD)
Работа с очередями
Управление QoS
Высокая производительность
DispatchQueue.global().async {
// фоновая задача
}
OperationQueue
Обёртка над GCD
Поддержка зависимостей и отмены
let queue = OperationQueue()
queue.addOperation {
// задача
}
Thread
Низкоуровневое управление потоками
Используется редко
async / await
Современный способ асинхронности
Основан на кооперативной конкурентности
Task {
await loadData()
}
Простые задачи — GCD
Сложные пайплайны — OperationQueue
Современный Swift — async/await
В реальных проектах чаще всего используются GCD и async/await. Остальные инструменты применяются в специализированных сценариях.