Skip to content

Latest commit

 

History

History
executable file
·
37 lines (24 loc) · 2.95 KB

File metadata and controls

executable file
·
37 lines (24 loc) · 2.95 KB

Асинхронные и реактивные интерфейсы iOS

К оглавлению

Содержание

Описание

Традиционно в программировании используют синхронное программирование, когда все инструкции выполняются последовательно, друг за другом. Пока одна синхронная операция не закончит свою работу, другие не смогут ее начать.

В противовес синхронному существует асинхронное программирование, при котором операция не блокирует выполнение приложения (или конкретный поток !!!ссылка!!!), позволяя нескольким операциям выполняться параллельно.

Интерфейсы асинхронного программирования

В iOS доступны следующие механизмы, позволяющие использовать асинхронное поведение в приложения:

  • Notification Center - слежение за различными событиями, например положение клавиатуры, поворотом экрана.
  • Key-Value Observing - слежение за изменение переменных.
  • URLSession - загрузка данных (файлов, web-страниц) без блокировки текущего потока.
  • Инструменты многопоточности (Async/await, Thread, GCD, Operations)
  • Closures/Callbacks
  • Combine, RxSwift, ReactiveSwift - фреймворки для реактивного программирования

и другие

Реактивное программирование

Реактивное программирование - это парадигма, объединяющая в себе асинхронность и потоки данных (streams, не путать с threads). Например, в приложении может существовать некоторый Publisher, генерирующий поток событий (поток данных), и подписанные на него Subscribers, слушающие данный поток и требуемым образом реагирующие на него.

Наиболее известными представителями "реактивщины" в iOS являются: