由于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、RxJava 等是ReactiveX.io标准的平台无关实现,例如 - Observables、Operators、Subjects 等。

虽然特定于平台的东西是特定于平台的 ;-) 在我们的例子中,RxCocoa 涵盖了与其他非 Cocoa 平台无关的 NotificationCenter。


据我所知,RxSwift 只实现了 Swift 标准库中类型的可观察属性,不包括 Foundation。

@Palle 打得好,我认为 RxSwift 的目标是针对平台无关的 Swift。Foundation 不适用于 Linux 等非 Apple 平台。

感谢@shai-mishali,因为 RxSwift 可以在非 Apple 平台上运行,我认为在 RxCocoa 中制作它是可以的。如果可能的话,我想将 Foundation 和 UIKit 分开。我现在将其标记为答案,希望能帮助其他有同样问题的人。