Вступление

Когда мне довелось посмотреть это видео WWDC, где инженеры Apple представили совершенно новую структуру Combine, которая позволяет разработчикам эффективно писать асинхронные программы, меня буквально унесло после просмотра. Попутно я расскажу вам шокирующую историю.

Когда мне довелось посмотреть это видео WWDC, где инженеры Apple представили совершенно новую структуру Combine, которая позволяет разработчикам эффективно писать асинхронные программы, меня буквально унесло после просмотра. Попутно я расскажу вам шокирующую историю.

Давайте начнем с определения фреймворка Combine, данного Apple:

«Единый декларативный API для обработки значений сверхурочно»

Combine представляет следующие основные характеристики фреймворка:

  • Общий
  • Типовая безопасность
  • Сначала композиция

Общее определение реактивного программирования выглядит следующим образом:

Общее определение реактивного программирования выглядит следующим образом:

Вот основные компоненты фреймворка «Комбинировать»:

Вот основные компоненты фреймворка «Комбинировать»:

  • Издатели
  • Подписчики
  • Операторы

Издатели

«Издатель» - это наиболее важный декларативный API фреймворка «Объединить».

Издатели - это типы значений в Swift.

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

Подписчики

Подписчики - это те, кто получает значения, исходящие от / от издателей. Просто может быть любое количество подписчиков, иначе они могут изменяться и, следовательно, ссылаться на них, так что в основном это классы.

Операторы

Они похожи на посредников, которые действуют частично как издатели, а частично как подписчики, и позволяют нам делать некоторые удивительные вещи, предоставляя массу операторов по умолчанию.

Для Ex:

«Receive (on :)» - это оператор, который можно использовать для передачи данных от издателя, который возвращает данные из фонового потока подписчику в основном потоке.

Глядя на этот высокоуровневый дизайн, я был ошеломлен, увидев, как инженеры Apple прямо украли все основные концепции RxSwift (а также ReactiveCocoa), такие как издатели, подписчики, combLatest, zip и т. Д. [И даже не изменили своих имен;)] и создал свою собственную версию под названием «Combine», применив некоторые из собственных методологий, чтобы вписаться в мир Swift.

Apple, похоже, по-прежнему следует основным принципам, определенным покойным великим Стивом Джобсом:

«Хорошие художники копируют; великие художники воруют ».

Комбинировать против RxSwift

Вот основные аналоги:

Эта шпаргалка предназначена для тех, кто уже использовал RxSwift.

Комбинировать

Плюсы:

  • Хорошо работает со SwiftUI, изменяя свойства модели, что позволяет SwiftUI динамически генерировать представления с помощью API @State, @Binding @BindableObject.
  • Встроен непосредственно в ОС
  • Высокая производительность
  • Поддержка кросс-платформ Apple

Минусы:

  • Относительно новый и, следовательно, получит минимальную помощь с проблемами / документацией
  • Поддерживает только устройства iOS13 и выше
  • RxCocoa предоставляет нам мощный API для потоковой передачи данных из компонентов пользовательского интерфейса и хорошо работает с UIKit, Combine не предоставляет ничего как такового.
  • Не управляемый сообществом проект с закрытым исходным кодом

Заключение

Я полагаю, что популярность RxSwift возросла только после выпуска Combine, но в будущем она может прекратиться, поскольку Combine изначально встроен в ОС, имеет гораздо большую мощность по сравнению и явно является победителем.

Но это не произойдет раньше, потому что «Combine» все еще относительно новый, и тот факт, что он поддерживает только iOS13 и выше, бледнеет по сравнению с RxSwift iOS8 и выше, а Apple, похоже, не имеет никаких планов обратной совместимости для этого.

Если вы все еще заинтересованы в изучении RxSwift с шаблоном проектирования VIPER, то этот курс должен дать вам импульс, который по-прежнему актуален и в настоящее время.

Первоначально опубликовано на https://saru2020.blogspot.com 10 апреля 2020 г.