如何在不设置变量的情况下使计时器无效
How to invalidate timer without setting variable
我正在使用计时器 class 每 x 秒执行一次特定代码。当此代码中发生某些事情时,我想使计时器无效,从而停止 "loop"。
我通过执行以下操作成功做到了这一点:
let timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//when something happens
timer.invalidate()
})
但是,我没有在我的代码中的任何其他地方使用这个计时器,所以 Xcode 给我警告:
Initialization of immutable value 'timer' was never used; consider replacing with assignment to '_' or removing it
显然,这不会阻止我的应用程序 运行,但我想摆脱警告。
我知道只是使用:
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//do stuff
})
仍然可以工作,但我不知道如何使计时器无效。仅在闭包内调用 invalidate()
是行不通的(我知道这是不可能的,但我还是试过了)。
通常在查看 Timer
问题时,人们使用的是全局计时器变量,这使得它很容易失效。但是,我不想这样做,因为这不是必需的,因为,一旦它完成,我就不再使用计时器对象。
我环顾四周,认为这将是一个相当普遍的问题,但我找不到任何有用的东西。谁能阐明我如何在不设置变量的情况下有效地使计时器无效?
您仍需要调用 timer.invalidate()
,但此处 timer
是对 Timer
.
块的引用
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block:
{
timer in //This is object that you need to use
//do stuff
//when something happens
timer.invalidate()
})
我正在使用计时器 class 每 x 秒执行一次特定代码。当此代码中发生某些事情时,我想使计时器无效,从而停止 "loop"。
我通过执行以下操作成功做到了这一点:
let timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//when something happens
timer.invalidate()
})
但是,我没有在我的代码中的任何其他地方使用这个计时器,所以 Xcode 给我警告:
Initialization of immutable value 'timer' was never used; consider replacing with assignment to '_' or removing it
显然,这不会阻止我的应用程序 运行,但我想摆脱警告。
我知道只是使用:
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//do stuff
})
仍然可以工作,但我不知道如何使计时器无效。仅在闭包内调用 invalidate()
是行不通的(我知道这是不可能的,但我还是试过了)。
通常在查看 Timer
问题时,人们使用的是全局计时器变量,这使得它很容易失效。但是,我不想这样做,因为这不是必需的,因为,一旦它完成,我就不再使用计时器对象。
我环顾四周,认为这将是一个相当普遍的问题,但我找不到任何有用的东西。谁能阐明我如何在不设置变量的情况下有效地使计时器无效?
您仍需要调用 timer.invalidate()
,但此处 timer
是对 Timer
.
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block:
{
timer in //This is object that you need to use
//do stuff
//when something happens
timer.invalidate()
})