在所有教程和官方文档中,我只看到当视图加载时计时器的初始化.
@State private var timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
后来
.onReceive(timer) {....}
但是,我应该如何仅在单击按钮时初始化计时器,并将其分配给未分配/未连接的计时器.
稍后我需要取消并重新连接,但这不是这里的问题.这里的问题是只有在点击按钮后才能连接.
我试着这样开始
@State private var timer: Cancellable?
....
timer = Timer.publish(every: 1, on: .main, in: .common).connect()
但我不能像这样在计时器初始化时调用onReceive,因为首先:
Protocol 'Cancellable' as a type cannot conform to 'Publisher'
第二个
Argument type 'Cancellable?' does not conform to expected type 'Cancellable'