Какие задачи выполняются на главной (main) очереди в iOS?

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

Ответ

Главная очередь (DispatchQueue.main) — это последовательная очередь, привязанная к главному потоку приложения. На ней обязательно выполняются все операции, связанные с пользовательским интерфейсом (UI):

  1. Обновление UI: изменение свойств визуальных элементов (text, color, frame).
  2. Обработка пользовательских событий: нажатия, жесты, ввод с клавиатуры.
  3. Анимации через UIKit/SwiftUI.
  4. Завершающие обработчики (completion handlers), которые явно указаны для выполнения на main.

Пример обновления UI:

DispatchQueue.main.async {
    self.titleLabel.text = "Данные загружены" // Безопасное обновление
}

Критическое правило: На главной очереди нельзя выполнять долгие или блокирующие операции (сетевые запросы, тяжелые вычисления, чтение больших файлов). Это приведет к "зависанию" интерфейса. Такие задачи должны выполняться в фоновых очередях (DispatchQueue.global()).

Проверка текущей очереди:

if Thread.isMainThread {
    print("Выполняемся на главной очереди")
}