Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про IOS: main, queue

Почему нельзя вызывать sync на main-очереди?

Вопрос проверяет понимание работы главного потока и влияния блокировок на UI.

Короткий ответ

Main queue выполняет UI-код и работает последовательно. Вызов sync блокирует главный поток. Если задача не может выполниться, UI зависает. В худшем случае возникает deadlock. Поэтому sync на main queue запрещен в обычной практике.

Длинный ответ

Главный поток — самый чувствительный ресурс в iOS-приложении.

Роль main queue

Main queue:

  • обрабатывает пользовательские события

  • обновляет UI

  • выполняет lifecycle-методы

Любая блокировка здесь сразу заметна пользователю.

Что делает sync на main queue

  1. Блокирует главный поток
    UI перестает отвечать.

  2. Ждет выполнения блока
    Но блок не может выполниться, если вызывается из main queue.

  3. Приводит к зависанию или deadlock

Типичная ошибка

DispatchQueue.main.sync {
    updateUI()
}

Если код выполняется на main queue, приложение зависнет.

Правильный подход

  • для UI использовать DispatchQueue.main.async

  • тяжелую работу выносить в фоновые очереди

  • синхронность обеспечивать архитектурно, а не блокировками

Вывод

Вызов sync на main queue блокирует UI и легко приводит к deadlock, поэтому в реальных приложениях он считается антипаттерном.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • IOS

    IOS

Ключевые слова

#main

#queue

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.