使用ReactiveCocoa,似乎有两种方法可以让订阅者从信号中接收相同的值,而不是重新触发生成这些值的任何操作:通过 RACReplaySubject 或 RACMulticastConnection。
以下是 RACReplaySubject 的标头文档:
重播主题保存它发送的值(直到其定义的容量)并将这些值重新发送给新的订阅者。它还将重播错误或完成。
对于 RACMulticastConnection:
多播连接封装了将一个订阅共享给多个订阅者的想法。如果对基础信号的订阅涉及副作用或不应多次调用,则通常需要这样做。
多播信号仅在
-[RACMulticastConnection connect]
被调用时订阅。在此之前,不会在 上发送任何值signal
。查看-[RACMulticastConnection autoconnect]
如何-[RACMulticastConnection connect]
自动调用。请注意,您不应手动创建 RACMulticastConnection。而是使用
-[RACSignal publish]
or-[RACSignal multicast:]
。
有人可以提供关于何时使用 RACReplaySubject 或 RACMulticastConnection 的简单指南吗?