使用ReactiveCocoa,似乎有两种方式让订阅方从一个信号接收相同的值,而不是重新触发任何操作生成这些值:通过RraceRePipe主题或RealMulkStudio连接。
以下是racreplaysubject的头文档:
重播主题保存其发送的值(直到其定义的容量)
并将其重新发送给新订户。它还将重播错误或
完成。
对于racmulticast连接:
多播连接封装了共享对
向许多订户发出信号。如果订阅
潜在的信号包括副作用或不应该被称为超过
一次。
只有当-[RACMulticastConnection connect]
被调用。在那之前,没有价值观
将在signal
上发送。参见-[RACMulticastConnection autoconnect]
了解如何-[RACMulticastConnection connect]
可以自动调用。
请注意,不应手动创建racmulticast连接。而是使用-[RACSignal publish]
或-[RACSignal multicast:]
。
有人能提供简单的指南,告诉你什么时候使用RracePrPress或RoCopeStudioDead?
最佳答案
实际上,它们并不是互斥的,甚至可以一起使用。
AA>的主要目的是订阅基本信号,然后将订阅发送到任意数量的其他用户,而不触发基带信号的多次副作用。RACMulticastConnection
通过将值发送到privateRACMulticastConnection
来实现这一点,privateRACSubject
通过连接的signal
属性公开。订阅者附加到主题(这不会造成任何副作用),并且连接会在那里转发所有基本信号的事件。
有几种不同的方法可以创建连接:-publish
创建一个与普通RACSubject
的连接。此主题不会将以前的值重播给新订阅服务器。-multicast:
方法创建与所选主题的连接。你可以决定在这里使用RACReplaySubject
。-replay
、-replayLast
和-replayLazily
方法便于创建与aRACReplaySubject
的连接,然后也可以自动地与aconnecting建立连接。
如果有疑问,-replayLazily
可能会做你想做的事情,因为它保存所有的值,并且只有当返回的信号接收到订阅时,才会触发任何副作用(或者启动任何工作)。