Combine - 测试 CurrentValueSubject 是否有订阅者

Combine - test if CurrentValueSubject has any subscribers

我想验证一些 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,在内部处理计数并将其公开为只读 属性,这也许更好。