【问题标题】:ReactiveCocoa create a signal producer that can emit manuallyReactiveCocoa 创建一个可以手动发出的信号生产者
【发布时间】:2016-04-25 10:31:25
【问题描述】:
我想在 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 输入信号并稍后手动触发信号。我做得对吗?
【问题讨论】:
标签:
swift
reactive-cocoa
reactive-cocoa-4
【解决方案1】:
要制作可以手动发出的信号,您可以使用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 转换为SignalProducer,则有一个SignalProducer 构造函数,
let flagSignalProducer = SignalProducer(signal: flagSignal)