为啥 `NotificationCenter+Rx` 在 RxCocoa 而不是 RxSwift
Posted
技术标签:
【中文标题】为啥 `NotificationCenter+Rx` 在 RxCocoa 而不是 RxSwift【英文标题】:Why `NotificationCenter+Rx` is in RxCocoa not RxSwift为什么 `NotificationCenter+Rx` 在 RxCocoa 而不是 RxSwift 【发布时间】:2018-05-23 00:40:38 【问题描述】:因为NotificationCenter 是Foundation 的一部分。我希望它应该在 RxSwift 中,而不是在 RxCocoa 中。
但是为什么NotificationCenter+Rx 在 RxCocoa 中呢?这背后有什么原因吗?
在我们的一些项目中,我们只使用 RxSwift 而没有 RxCocoa。如果我们使用NotificationCenter.default.rx.notification
,我们将得到错误Value of type 'Reactive<NotificationCenter>' has no member 'notification'
,因为NotificationCenter+Rx 仅在RxCocoa 中。
【问题讨论】:
据我所知,RxSwift 只实现了 Swift 标准库中类型的 observable 属性,不包括 Foundation。 @Palle 好电话,我认为 RxSwift 的目标是针对独立于平台的 Swift。 Foundation 不适用于 Linux 等非 Apple 平台。 【参考方案1】:简单的答案是 - RxSwift、RxJava 等是ReactiveX.io 标准的平台无关实现,例如- Observables、Operators、Subjects 等。
虽然平台特定的东西是平台特定的;-) 在我们的例子中,RxCocoa 涵盖了与其他非 Cocoa 平台无关的 NotificationCenter。
【讨论】:
感谢@shai-mishali,因为 RxSwift 可以在非 Apple 平台上运行,我认为在 RxCocoa 中制作它是可以的。如果可能的话,我想将 Foundation 和 UIKit 分开。我现在把它标记为答案,希望能帮助其他有同样问题的人。以上是关于为啥 `NotificationCenter+Rx` 在 RxCocoa 而不是 RxSwift的主要内容,如果未能解决你的问题,请参考以下文章