Ben*_*wry 0 timer nstimer swift
我使用Timer类每x秒执行一些代码.当此代码中发生某些事情时,我想使计时器无效,从而停止"循环".
我通过执行以下操作设法完成此操作:
let timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//when something happens
timer.invalidate()
})
Run Code Online (Sandbox Code Playgroud)
但是,我不在我的代码中的任何其他位置使用此计时器,因此Xcode向我发出警告:
永远不会使用不可变值'timer'的初始化; 考虑将赋值替换为'_'或删除它
显然,这并不能阻止我的应用程序运行,但我想摆脱警告.
我知道只是使用:
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//do stuff
})
Run Code Online (Sandbox Code Playgroud)
仍然会工作,但后来我不知道如何使计时器无效.只是invalidate()在封闭内部调用不起作用(我知道,但我还是试了很久).
通常,当Timer在SO上查看问题时,人们正在使用全局计时器变量,这使得它很容易失效.但是,我不想这样做,因为它没有必要,因为再次,我没有使用计时器对象一旦完成.
我环顾四周,认为这是一个相当普遍的问题,但我找不到任何有用的东西.谁能说明如何在不设置变量的情况下有效地使计时器失效?
你需要仍然调用,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()
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |