Каковы различия между наблюдаемыми и предметными в rxSwift

Каковы различия между наблюдаемыми и предметными. Когда я определяю переменную наблюдаемого типа. Он может испускать onNext, onComplete, onDispose. Однако субъект может сделать то же самое. Когда следует использовать наблюдаемые и в каком случае я должен использовать тему?

3 Solutions collect form web for “Каковы различия между наблюдаемыми и предметными в rxSwift”

Чтобы понять разницу между ними, следует упомянуть, что Observable :

В ReactiveX наблюдатель подписывается на Observable. Затем этот наблюдатель реагирует на любой предмет или последовательность элементов, которые испускает Observable. Этот шаблон облегчает параллельные операции, потому что ему не нужно блокировать, ожидая, что Observable будет испускать объекты, но вместо этого он создает часового в форме наблюдателя, который готов реагировать соответствующим образом в любое будущее, которое Observable делает.

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

На самом деле, Subject является особым типом Observables (вы все равно можете подписаться на сообщения, как и любые другие наблюдаемые):

Объект – это своего рода мост или прокси, доступный в некоторых реализациях ReactiveX, который действует как наблюдатель и как наблюдаемый . Поскольку он является наблюдателем, он может подписаться на один или несколько Observables, и поскольку он является наблюдаемым, он может проходить через элементы, которые он наблюдает, переиздавая их, и он также может генерировать новые элементы.

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


Фрагменты кода : я бы предложил проверить RxSwift для чайников 🐤 Часть 3 для просмотра наблюдаемых и практических практических примеров .

Кроме того : для проверки типов объектов вы можете проверить: Типы объектов RxSwift .

Я думаю, и, как я узнал об этих двух темах, могу сказать,

Наблюдаемые

  • Наблюдаемая (фундаментальная часть Rx) – это последовательность с некоторыми особенностями. и самая важная особенность – асинхронная. Наблюдаемые производят некоторые события (т.е. onNext, onError, onCompleted), которые называются излучателями. События содержат некоторое значение (например, Int, Bool, Array или настраиваемый тип).

Предметы

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

У вас есть несколько ответов, объясняющих разницу между Observables и Subjects, но никто не рассмотрел ваш второй вопрос …

Когда следует использовать наблюдаемые и в каком случае я должен использовать тему?

Вот отличный, если сложно, ответ на этот вопрос: http://davesexton.com/blog/post/To-Use-Subject-Or-Not-To-Use-Subject.aspx

TL, DR – это. Используйте Наблюдаемый, когда это возможно, используйте Предмет, если это необходимо.

Вы используете тему, когда вам нужен горячий наблюдаемый, и у вас еще нет наблюдаемого для работы. Например, RxCocoa широко использует объекты для создания наблюдаемых для вас элементов, привязанных к определенным элементам пользовательского интерфейса. Они в первую очередь предназначены для соединения не-Rx-кода в код Rx и подключения производителей к потребителям, где по какой-то причине они должны быть созданы сначала.

  • `ExpressibleByArrayLiteral` соответствует классу и его суперкласс =>" <суперкласс> не конвертируется в <подкласс> "
  • Класс не реализует требуемые члены суперкласса
  • Как я могу сделать таймер обратного отсчета, как в музыкальном проигрывателе?
  • Как показать и / или скрыть подзаголовок с помощью swift
  • как разбирать объект FDataSnapshot firebase?
  • Как вы делаете «wrap_content» (синтаксис Android XML) в iOS Swift
  • writeToFile не работает в проекте Swift 2.0
  • Быстрое введение элемента по конкретному индексу
  • Добавление контактов в карту с помощью MapKit - Swift 3.0
  • Потеря ссылки на свойство экземпляра в Swift
  • Показать маркер, где пользователь вводит полилинию
  • Interesting Posts

    Отобразить список моих подписчиков Twitter в приложении ios 5?

    Цвет подсветки UINavigationController

    APNs Сообщение отправляется на сервер, на устройство iOS не поступает уведомление

    Автоматизация пользовательского интерфейса: – Как нажать кнопку, используя javascript экрана, который не является основным экраном (iPhone)?

    Невозможно установить тип контента в AFNetworking AFHTTPRequestOperationManager

    Как контроллер просмотра может «вставлять» себя в UINavigationController – особенно если он содержится в контроллере представления контейнера

    что является недостатком callStackSymbols

    Показывать недельные и дневные списки для каждого месяца, когда мы проходим год

    Передача данных в и из Popover в Swift

    NSURLProtocol не загружается после ответа YES на canInitWithRequest

    Использование делегата для передачи данных для резервного копирования стека навигации

    Как реализовать динамическое фоновое изображение в быстром

    есть ли упаковщик для Xcode? (например, NuGet)

    Как рассчитать размер кадра для рисования CoreText по строке

    Apple потребует подключения HTTPS для приложений iOS к концу 2016 года

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.