3

我想在 swift 中使用 ReactiveCocoa 对以下场景进行建模。

class A{
   let flagSignalProducer = A Signal Producer
   someSignal.takeUntil(a signal that I can trigger manually which is created out of flagSignalProducer).subscribeNext{ (_) in

   }
}

如何创建信号生产者并将信号用作 takeUntil 输入信号并稍后手动触发信号。我做得对吗?

4

1 回答 1

2

要制作可以手动发出的信号,您可以使用Signal<(), NoError>.pipe()获取对信号“观察者”的引用,这将允许您手动发送信号上的事件。

let (flagSignal, flagObserver) = Signal<(), NoError>.pipe()
someSignal.takeUntil(flagSignal).observeNext { _ in

}

//somewhere else, trigger the signal manually with the Observer
flagObserver.sendNext(())
flagObserver.sendCompleted() //complete the signal and free memory 

如果您出于某种原因需要将您的转换flagSignal为 a ,则有一个构造函数,SignalProducerSignalProducer

let flagSignalProducer = SignalProducer(signal: flagSignal)
于 2017-04-11T19:33:39.483 回答