【发布时间】:2020-10-21 06:42:32
【问题描述】:
我对 Apple 的 Combine 框架中的 TimerPublisher 有疑问。文档说:在给定时间间隔内重复发出当前日期的发布者。对于非组合 Timer 对象,您可以取消它们。在创建TimerPublisher 并连接到它之后如何清理?假设我取消了所有接收器并且没有订阅计时器发布者。发布者是否仍会在系统中产生一些开销?如果是这样,那么我该如何取消计时器发布者?
【问题讨论】:
-
当订阅者取消时,它会取消整个管道,包括
TimerPublisher。所以,let c = Timer(...).autoconnect().sink {...},然后c.cancel()会起作用。或者,如果c简单地取消初始化 -
如果您有多个接收器会怎样?比如
let c = Timer(...).autoconnect(); let s = c.sink {...}; let t = c.sink {...},那么你必须取消所有个sinks才能取消定时器吗? -
我猜不是。我在终端中尝试过,New Dev 是对的,取消一个接收器会完全取消计时器发布者,即使连接了更多接收器。不知道为什么这被否决了¯_(ツ)_/¯