我觉得我理解了 ReactiveCocoa 的所有基本组件(从概念上),通过理解如何将所有部分连接在一起仍然有点混乱。
例如,在阅读了 Signal 之后,我完全期望 SignalProducer 只有一个返回 Signal 的 start() 方法,您可以像这样使用它:
mySignalProducer.start().observe(myObserver)
相反,您必须将观察者传递给 start(),然后 SignalProducer 会为您调用 observe():
mySignalProducer.start(myObserver)
这意味着 SignalProducer 的接口要大得多(更容易理解),因为 observe() 的所有变体都必须在 start() 上复制(例如 startNext() 等)。
我认为这里有两种可能:
- start() 不能简单地返回信号有技术原因
- 我在概念上误解了 SignalProducer,导致对其界面的期望不稳
如果 1 是这种情况,我猜这与我还不完全理解的内存管理和一次性用品有关。
我更担心的是2。在内部,我对 SignalProducer 的理解基本上映射到了工厂的概念,例如:
mySignalFactory.createSignal().observe(myObserver)
这就是为什么我很惊讶我们没有找到返回信号的 start()。
如果社区可以在这里提供一些启示,我将不胜感激。
谢谢!