【发布时间】:2019-12-12 11:32:53
【问题描述】:
我想验证某些CurrentValueSubject 是否添加了任何订阅。有什么方法可以验证吗?
【问题讨论】:
-
订阅或订阅者?有一个很大的不同。为什么你需要知道这一点?似乎违反了Combine的全部目的。
-
您可能会在 Swift Combine: Check if Subject has observer? 主题中找到有用的建议方法。
我想验证某些CurrentValueSubject 是否添加了任何订阅。有什么方法可以验证吗?
【问题讨论】:
最简单的方法可能是使用handleEvents 并使用计数器进行跟踪。
class A {
var count = 0
let subject = CurrentValueSubject<Bool, Never>(true)
func myStuff() {
subject.handleEvents(receiveSubscription: { [unowned self] _ in
self.count += 1
}, receiveCompletion: { [unowned self] _ in
self.count -= 1
}, receiveCancel: {
self.count -= 1
})
}
}
不确定这是否适合您的问题。
您甚至可以创建一个自定义 Publisher,它在内部处理计数并将其公开为只读属性,这可能会更好。
【讨论】: