Каковы различия между наблюдаемыми и предметными в 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 и подключения производителей к потребителям, где по какой-то причине они должны быть созданы сначала.

  • Swift SpriteKit делает физику из текстуры изображения слишком медленно замедляет мое приложение
  • Не удается получить доступ к отношениям «один ко многим» в CoreData с помощью Swift
  • Ошибка автоматического макета с помощью UIDocumentMenuViewController
  • Масштабировать текстовую метку по размеру экрана
  • Нет '|' кандидаты создают ожидаемый контекстный тип результата «NSTextStorageEditActions»
  • DateFormatter date from string возвращает nil
  • Alamofire: : FAILURE: Error Domain = NSURLErrorDomain Code = -999 «отменен»
  • Связывание с UIRefreshControl после обновления с помощью RxSwift
  • Как перемещать изображение в Swift?
  • Размеры UITableViewWrapperView и UITableView отличаются с автозапуском
  • swift 3, непризнанный селектор, отправленный экземпляру (KeyboardWillShow)
  • Interesting Posts

    Создание StopWatch в Iphone

    UITableView перезагружает и перемещает строки с такими же результатами пакетного обновления: «Попытка создать две анимации для ячейки»

    установить кнопку внизу таблицы staticView

    Как я могу пропустить диалог разрешений для одного входа iOS для Facebook?

    Всплывающее окно вопросов TestFlight не появляется

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

    iOS – UIViewcontroller обнаруживает вращение?

    Подключение к серверу Redis с помощью NSStream в Swift

    Как преобразовать строку даты типа «2011-01-12T14: 17: 55.043Z» в длинный как 1294841716?

    Установить приложение In-House iOS по беспроводной сети с помощью manifest.plist больше не работает с iOS 8

    Xcode 4 сбой при открытии проекта

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

    Предупреждение о компиляторе каталогов активов: для приложений iPad, ориентированных на IOS 7.0 и более поздних версий, требуется значок приложения 76×76 @ 2x.

    Локализация iOS. Локализовать представления динамически, не загружая файлы строк раскадровки / ниба.

    Facebook UIActivityViewController не хватает кнопок «Отмена» и «Опубликовать»

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