【问题标题】: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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多