我使用Timer类每x秒执行一次特定的代码。当代码中发生一些事情时,我希望使计时器失效,从而停止“循环”。
我做到了以下几点:
let timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//when something happens
timer.invalidate()
})但是,我在代码中的任何地方都不使用这个计时器,所以Xcode给出了警告:
从未使用过不可变值“timer”的初始化;请考虑将其替换为“_”或删除它
显然,这并不能阻止我的应用程序运行,但我想摆脱警告。
我知道只是用:
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//do stuff
})仍然有效,但我不知道如何使计时器失效。在闭包中打电话给invalidate()是行不通的(我知道很长一段时间,但我还是试过了)。
通常,当查看Timer问题时,人们都在使用全局计时器变量,这使得它很容易失效。但是,我不想这样做,因为这是不必要的,因为,同样,我不会在计时器对象完成后使用它。
我环顾四周,认为这将是一个相当常见的问题,但我找不到任何帮助。有人能说明我如何在不设置变量的情况下有效地使计时器失效吗?
发布于 2017-02-03 08:52:27
您仍然需要调用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()
})https://stackoverflow.com/questions/42020182
复制相似问题