![][1]
![][2]
Если вы хотите добиться `UI` отзывчивости вашего` iOS` приложения, выполняя такие затратные по времени куски кода, как загрузка данных из сети или обработка изображений, то вам нужно использовать продвинутые паттерны, связанные с многопоточностью (`сoncurrency`), иначе работа вашего пользовательского интерфейса (`U`I) начнет сильно замедляться и даже может привести к полной его «заморозке». Вам нужно убрать ресурсо-затратные задачи с `main thread` (главного потока), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (`UI`).
В текущей версии `Swift 3 `и ближайшей` Swift 4` (осень 2017) это можно сделать двумя способами, которые пока не связаны с встроенными языковыми конструкциями `Swift`, начало реализации которых будет только в `[Swift 5][3]` (конец 2018).
Один из них использует `GCD (Grand Central Dispatch)` и ему посвящена [ предыдущая статья][6]. В этой статье мы покажем, как достичь отзывчивости `UI` в `iOS` приложениях с помощью таких абстрактных понятий, как операция` Operation` и очередь операций ` OperationQueue`. Мы также покажем в чем различие этих двух подходов и какой из них в каких ситуациях лучше использовать.
Код для этой статьи можно посмотреть на [Github][7].
[Читать дальше →][8]
[1]:
https://habrastorage.org/web/592/ed8/a45/592ed8a459394f11b7e26add358101b0.png
[2]:
https://habrastorage.org/web/67d/c94/62c/67dc9462c57f489290054ec4013c3b1d.png
[3]:
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20170807/038645.html?utm_campaign=This%2BWeek%2Bin%2BSwift&utm_medium=web&utm_source=This_Week_in_Swift_141
[4]:
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20170807/038645.html?utm_campaign=This%2BWeek%2Bin%2BSwift&utm_medium=web&utm_source=This_Week_in_Swift_141
[5]:
https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20170807/038645.html?utm_campaign=This%2BWeek%2Bin%2BSwift&utm_medium=web&utm_source=This_Week_in_Swift_141
[6]:
https://habrahabr.ru/post/320152/
[7]:
https://github.com/BestKora/Operation_OperatioQueue
[8]:
https://habrahabr.ru/post/335756/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut