Багатопоточність (concurrency) в Swift 3. GCD і Dispatch Queues

Треба сказати, що многопоточность (сопсиггепсу) в iOS завжди входить до питання, що задаються на інтерв'ю розробників iOS додатків, а також в число топ помилок, які роблять програмісти при розробці iOS додатків. Тому так важливо володіти цим інструментом досконало.
Отже, у вас є додаток, воно працює на
main thread
(головному потоці), який відповідає за виконання коду, що відображає ваш користувальницький інтерфейс (
UI
). Як тільки ви починаєте додавати до вашого додатком такі «затратні за часом» шматки коду, як завантаження даних з мережі або обробка зображень на
main thread
(головному потоці), то робота вашого
UI
починає сильно сповільнюватися і навіть може призвести до повного його «заморожування».



Як можна змінити архітектуру програми, щоб таких проблем не виникало? У цьому випадку на допомогу приходить багатопоточність (
сопсиггепсу
), яка дозволяє одночасно виконувати дві або більш незалежні задачі (
завдання
): обчислення, завантаження даних з мережі або з диска, обробку зображень і т. д.

Читати далі →