Надо сказать, что [многопоточность][1] (сoncurrency) в iOS всегда входит в вопросы, задаваемые на [интервью разработчикам iOS приложений][2], а также в число [топ ошибок][3], которые делают программисты при разработке iOS приложений. Поэтому так важно владеть этим инструментом в совершенстве.
Итак, у вас есть приложение, оно работает на `main thread` (главном потоке), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (`UI`). Как только вы начинаете добавлять к вашему приложению такие «затратные по времени» куски кода, как загрузка данных из сети или обработка изображений на `main thread` (главном потоке), то работа вашего `UI` начинает сильно замедляться и даже может привести к полному его «замораживанию».
Как можно изменить архитектуру приложения, чтобы таких проблем не возникало? В этом случае на помощь приходит многопоточность (`сoncurrency`), которая позволяет одновременно выполнять две или более независимые задачи (`tasks`): вычисления, загрузку данных из сети или с диска, обработку изображений и т.д.
[Читать дальше →][4]
[1]:
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html
[2]:
https://medium.com/cocoaacademymag/25-ios-interview-questions-and-answers-for-junior-developers-19bfe6e99b0#.yqop8hkzt
[3]:
https://www.toptal.com/ios/top-ios-development-mistakes
[4]:
https://habrahabr.ru/post/320152/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut