![image][1]
Для повышения отзывчивости приложения необходимо грамотно разбивать выполнение задач на несколько потоков. Набор технологий в руках iOS-разработчика представляет из себя следующее. Способы представлены по возрастанию уровня абстракции.
* **Pthreads**, или потоки POSIX. Библиотека для низкоуровневой работы с многопоточностью. Определена как набор типов и функций на языке C. Подробнее можно ознакомиться [тут][2].
* **Background selectors**. Это отправка сообщения объекту, которое будет исполнено на указанном потоке. В коде это селектор с названием `performSelector` и различными параметрами (например, `performSelectorOnMainThread:withObject:waitUntilDone:`). [Документация][3]
* **NSThread**. Представлены как базовые средства для работы с потоками. Ознакомьтесь с концептуальным [документом][4] по работе с потоками и [документацией][5].
* **Grand Central Dispatch**. Библиотека, основанная на блоках — анонимных участках кода, иначе замыканиях. Рабочее название — **libdispatch**.
* **NSOperation**. Построен на основе GCD. Стоит заметить, что сама операция является абстрактной сущностью и на практике стоит использовать `NSInvocationOperation` и `NSBlockOperation`.
В этой статье поговорим о вопросах CGD.
[Читать дальше →][6]
[1]:
https://habrastorage.org/web/14d/c1b/ee6/14dc1bee6d6b45428dadef9c14b76059.png
[2]:
https://habrahabr.ru/post/326138/
[3]:
https://developer.apple.com/documentation/objectivec/nsobject/1417922-performselector
[4]:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/AboutThreads/AboutThreads.html#//apple_ref/doc/uid/10000057i-CH6-SW2
[5]:
https://developer.apple.com/documentation/foundation/thread
[6]:
https://habrahabr.ru/post/332026/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut