为何在RXSwift下所有的对象都可以调用rx去实现?
随意创建一个btn,绑定一个tap事件
self.button.rx.tap
.subscribe(onNext: { () in
print("button被点击了~~~~")
})
.disposed(by: disposeBag)
点击rx,跳转到rx的内部实现,我们可以看到如下代码:

从中我们可以看到,rx属于 ReactiveCompatible 协议的扩展
点击ReactiveCompatible查看其内部实现,如图:

上图可以看到,为了让ReactiveCompatible这个协议支持泛型,内部创建了一个rx的关联属性
而最后 NSObject 去遵从了这个协议,如下,通过全局搜索 ReactiveCompatible 协议,可以看到:

so。。。。。万物皆RX
网友评论