【发布时间】:2019-11-23 11:13:45
【问题描述】:
我才开始学习结合,所以对我来说还是有点模糊。我想创建一个自定义Publisher,它将使用CLLocationManager 来公开当前用户位置。我希望它以这样的方式工作,locationManager 只有在连接了一些订阅者时才开始更新位置。在所有订阅者都被删除、取消等之后,它应该停止更新位置。这可能吗?如何创建这样的publisher?这也是正确的方法,还是有什么问题?
【问题讨论】:
-
谢谢,我已经看到了,但它的行为与我想要的有点不同。您需要明确告诉它开始通知更新,我希望它自动开始/停止更新位置,具体取决于是否有一些订阅者连接到发布者。
-
看看这个:github.com/broadwaylamb/OpenCombine,从那里你应该能够通过扩展现有的 PassthroughSubject 来实现你自己的 PassthroughSubject 说 PassthroughLocationSubject 包含对位置管理器的引用。然后,当您添加第一个订阅时,您启动位置管理器,当您删除最后一个订阅者时,您停止位置管理器,并且在每次位置更新/失败时,您通过 send() 方法发送值。希望有帮助
-
我可能是错的,但我相信因为 PassthroughSubject 是一个类,它不能像 Timer.publish 一样与 @State 一起使用,它是一个结构。
标签: swift reactive-programming core-location combine publisher