RXSWIFT
RxSwift — библиотека для работы с асинхронным кодом для языка Swift. Использование RxSwift дает возможность представить события как потоки и подписываться на них. Благодаря этому будет проще проводить обработку сложных последовательностей асинхронных событий.
Библиотеку выгодно использовать если в среде выполнения вашего приложения (runtime) происходит огромное количество одновременных, но не связанных друг с другом процессов.
В iOS SDK есть много инструментов для обработки асинхронных событий, но, чтобы объединить их для решения реальных задач, нужны «костыли». RxSwift — де-факто стандарт для приложений с архитектурным шаблоном MVVM, который часто используют для разработки под iOS.
RxSwift нужен, если вы собираетесь разработать сложное приложение на основе шаблона проектирования архитектуры MVVM (Model-View-ViewModel). Такой конструктивный паттерн используют для разделения кода пользовательского интерфейса (UI) и остального, с созданием слабой связи между ними.
Наличие прослойки ViewModel позволяет модели и представлению приложения взаимодействовать друг с другом, без необходимости создавать жесткие зависимости. Благодаря разделению, MVVM-проекты быстрее и удобнее разрабатывать, масштабировать и поддерживать.
RxSwift превращает события в потоки. Когда пользователь будет, например, нажимать на кнопку в приложении (View) это спровоцирует отправку команды в ViewModel. Она получает данные и вносит изменения в Model. Таким образом поток доходит до обновления данных и возвращается к представлению с результатом.
В RxSwift есть три основных вида компонентов:
— обозреваемые последовательности, позволяющие одним классам подписываться на последовательности событий, транслирующиеся другими;
— операторы для проведения операций над элементами последовательностей;
— планировщики, оптимизирующие выполнение задач в потоках и очередях.
Все они используются для создания асинхронных приложений, когда:
- в приложении много данных и ивентов для их обработки;
- использование стандартных обсервов, нотификаций и замыканий приводит к появлению до 90% лишнего кода;
- нужно облегчить задачу разработчикам и четко выделить где нужен синхронный, а где асинхронный код.
RxSwift — библиотека для работы с асинхронным кодом, которая нужна в тех случаях, когда у вас много такого кода. IOS разработчики скажут вам, нужно ли использовать RxSwift, как только вы им опишите желаемую функциональность будущего приложения. В iOS SDK есть и другие инструменты для разработки асинхронных приложений, например Notifications или GCD, но только RxSwift включает в себя все необходимое для простого и грамотного решения этой задачи.