Какую очередь использует iOS по умолчанию для UI и фоновых задач?

«Какую очередь использует iOS по умолчанию для UI и фоновых задач?» — вопрос из категории Многопоточность, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для UI-обновлений iOS по умолчанию использует главную очередь (DispatchQueue.main), так как она связана с главным потоком приложения.

Для фоновых задач система предоставляет глобальные параллельные очереди с разными уровнями качества обслуживания (QoS). По умолчанию используется очередь с приоритетом .default.

Примеры:

// 1. Обновление UI на главной очереди (обязательно)
DispatchQueue.main.async {
    self.label.text = "Updated"
}

// 2. Фоновая задача на глобальной очереди по умолчанию
DispatchQueue.global(qos: .default).async {
    let data = fetchDataFromNetwork()
    DispatchQueue.main.async {
        self.updateUI(with: data)
    }
}

// 3. Краткая запись для .default
DispatchQueue.global().async {
    // Фоновая работа
}

Почему так: Главная очередь последовательна и синхронизирована с циклом обработки событий UIKit/AppKit, что гарантирует безопасность UI. Глобальные очереди управляются системой и оптимально распределяют задачи между ядрами процессора.