Rxswift или реактивное яблоко

Rxswift или реактивное яблоко

11.09.2017

Представьте, что вы руководитель компании, у которого в подчинении сотня человек и при этом задачи каждому из них вам предстоит ставить лично. Сложновато, не так ли? А теперь вообразим, что каждому из них достаточно сказать всего одно предложение и работник сразу (и как надо) выполняет задачу. Многие из вас подумают, что в реальной жизни такое не воплотимо и окажутся правы. Однако, в программирование возможно все (в разумных пределах). Поэтому сегодня мы вам расскажем о внедрение реактивного программирования, то бишь RX в язык программирования для яблок, то бишь Swift.

Представьте, что вы руководитель компании, у которого в подчинении сотня человек и при этом задачи каждому из них вам предстоит ставить лично. Сложновато, не так ли? А теперь вообразим, что каждому из них достаточно сказать всего одно предложение и работник сразу (и как надо) выполняет задачу. Многие из вас подумают, что в реальной жизни такое не воплотимо и окажутся правы. Однако, в программирование возможно все (в разумных пределах). Поэтому сегодня мы вам расскажем о внедрение реактивного программирования, то бишь RX в язык программирования для яблок, то бишь Swift.

Реактивное программирование - это программирование с асинхронными потоками данных.
RX - это набор библиотек, которые позволяют работать с событиями и асинхронными вызовами. Все это реализовано на основе паттерна Observable.
Суть RX - это асинхронные операции, мы должны делать работу в бекграунде пока юзер пользуется устройством.

Swift – язык, который приятен, что бы вы с его помощью ни делали. Он хорошо объединяет аспекты других языков, что делает Swift действительно гибким и относительно легким для понимания новичками. Поэтому его используют не только с Объектно-Ориентированным Программированием (ООП), но и с другими парадигмами, вроде новейшего Протокол-Ориентированного Программирования, представленного на WWDC 2015. Вам не нужно много искать, чтобы обнаружить, что в Swift вы можете также использовать Функциональное Программирование и Реактивное Программирование. Сегодня мы поговорим о комбинации двух последних: Функциональном Реактивном Программировании.

Итак, что такое Функциональное Реактивное Программирование? Если коротко, то это – использование Реактивного Программирование с частями Функционального Программирования (filter, map, redice и т.д.). Причём, они уже встроены в Swift! А реактивная часть обеспечивается RxSwift.
RxSwift – это версия Swift с реактивными расширениями, написанными на нём самом.
ReactiveX – это комбинация лучших идей паттерна “Наблюдатель”, “Итератор” и функционального программирования.
В целом, вам нужно немного изменить свою привычку устанавливать значение переменной статически на наблюдение за чем-то, что может и, возможно, изменится в будущем.

Вы можете спросить, “Почему мне бы вдруг захотелось это использовать?”. Ответ очень прост. Это делает вашу работу проще. Вместо сообщений, который сложно тестировать, мы можем использовать сигналы. Вместо делегатов, который занимают много места в коде, мы можем писать блоки и удалить многочисленные switch и if/else. У нас также есть KVO, IBActions, фильтры ввода, MVVM и много-много других вещей, которые отлично управляются RxSwift. Но помните, что это не всегда лучший способ решения проблем, но вы всё равно должны знать, когда лучше его использовать, чтобы полностью раскрыть потенциал RxSwift.

Для понимания разницы между императивном и реактивным программированием рассмотрим небольшой пример.
В императивном программировании присваивание a := b + c будет означать, что переменной a будет присвоен результат выполнения операции b + c, используя текущие (на момент вычисления) значения переменных. Позже значения переменных b и c могут быть изменены без какого-либо влияния на значение переменной a. В реактивном же программировании значение a будет автоматически пересчитано, основываясь на новых значениях.
Хасбулатов Исмаил (iOS-разработчик  DIIT Center)