Надо сказать, что
многопоточность (сoncurrency) в iOS всегда входит в вопросы, задаваемые на
интервью разработчикам iOS приложений, а также в число
топ ошибок, которые делают программисты при разработке iOS приложений. Поэтому так важно владеть этим инструментом в совершенстве.
Итак, у вас есть приложение, оно работает на
main thread
(главном потоке), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (
UI
). Как только вы начинаете добавлять к вашему приложению такие «затратные по времени» куски кода, как загрузка данных из сети или обработка изображений на
main thread
(главном потоке), то работа вашего
UI
начинает сильно замедляться и даже может привести к полному его «замораживанию».
Как можно изменить архитектуру приложения, чтобы таких проблем не возникало? В этом случае на помощь приходит многопоточность (
сoncurrency
), которая позволяет одновременно выполнять две или более независимые задачи (
tasks
): вычисления, загрузку данных из сети или с диска, обработку изображений и т.д.