Swift 如何在Combine中将subscrber与主题分离?
我正在编写一个程序,需要动态地从事件源附加/分离事件处理程序。 这种情况会发生很多次,我不希望附加/分离导致任何消息丢失或重复 但我似乎在这里做错事来分离联合收割机订户Swift 如何在Combine中将subscrber与主题分离?,swift,combine,Swift,Combine,我正在编写一个程序,需要动态地从事件源附加/分离事件处理程序。 这种情况会发生很多次,我不希望附加/分离导致任何消息丢失或重复 但我似乎在这里做错事来分离联合收割机订户 import Foundation import Combine let a = PassthroughSubject<String,Never>() var b = a .buffer(size: .max, prefetch: .byRequest, whenFull: .customError({ f
import Foundation
import Combine
let a = PassthroughSubject<String,Never>()
var b = a
.buffer(size: .max, prefetch: .byRequest, whenFull: .customError({ fatalError() }))
.receive(on: DispatchQueue.main)
.sink(receiveValue: { print($0) })
a.send("AAA")
b.cancel()
a.send("BBB")
b = a
.buffer(size: .max, prefetch: .byRequest, whenFull: .customError({ fatalError() }))
.receive(on: DispatchQueue.main)
.sink(receiveValue: { print($0) })
a.send("CCC")
RunLoop.main.run()
CCC
重复,而BBB
意外。它看到SMS取消b
不会将其与源a
分离。看来我做这些事情完全错了
什么是从主题附加/分离订阅者的正确方法?在这种情况下,我希望动态地从a
附加/分离b
- Xcode 11 GM
AAA
BBB
CCC
CCC