Combine - 测试 CurrentValueSubject 是不是有订阅者
Posted
技术标签:
【中文标题】Combine - 测试 CurrentValueSubject 是不是有订阅者【英文标题】:Combine - test if CurrentValueSubject has any subscribersCombine - 测试 CurrentValueSubject 是否有订阅者 【发布时间】:2019-12-12 11:32:53 【问题描述】:我想验证某些CurrentValueSubject
是否添加了任何订阅。有什么方法可以验证吗?
【问题讨论】:
订阅或订阅者?有一个很大的不同。为什么你需要知道这一点?似乎违反了Combine的全部目的。 您可能会在 Swift Combine: Check if Subject has observer? 主题中找到有用的建议方法。 【参考方案1】:最简单的方法可能是使用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
,它在内部处理计数并将其公开为只读属性,这可能会更好。
【讨论】:
以上是关于Combine - 测试 CurrentValueSubject 是不是有订阅者的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI ObjectBinding 不会使用 combine 接收来自可绑定对象的 didchange 更新