gpt4 book ai didi

iphone - 如何在 ReactiveSwift 中中断 SafeSignal?

转载 作者:搜寻专家 更新时间:2023-11-01 07:03:58 24 4
gpt4 key购买 nike

您好,我是响应式 swift 的新手。在我的新项目中,我使用的是 ReactiveSwift。我通过使用 SafeSignal 变量观察值。我想在获取值之前中断信号。请帮我解决这个问题。

最佳答案

一般来说,当您观察一个Signal启动一个SignalProducer时,您会得到一个一次性 back.

这可以用来结束观察:

let property = MutableProperty<Int>(0)
let signalDisposable = property.signal.observeValues {
print("Signal: \($0)")
}

let producerDisposable = property.producer.startWithValues {
print("Producer: \($0)")
}


property.value = 1 // Signal and Producer receive value 1
signalDisposable?.dispose() // End signal observation
property.value = 2 // Only producer receives value 2
producerDisposable.dispose() // End producer observation
property.value = 3 // No one receives value 3

取消正在运行的工作

如果您正在为某些(较长的)工作创建自己的 SignalProducer,则必须牢记处置以停止正在进行的工作:

let performNetworkCall = SignalProducer<Data, Error> { (observer, disposable) in
let url = URL(string: "https://www.download.com")!
let downloadTask = URLSession.shared.dataTask(with: url, completionHandler: { (data, _, error) in
// Handle completion
})
downloadTask.resume()
disposable.observeEnded {
// Cancel the download on disposal!
downloadTask.cancel()
}
}

否则,你的观察者会被分离,但观察者开始的工作仍然会恢复

关于iphone - 如何在 ReactiveSwift 中中断 SafeSignal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49189887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com