从 Swift 中的函数使计时器无效
Invalidate Timer from Function in Swift
我有一个用 Swift
编写的应用程序,在 viewDidLoad
中声明了 NSTimer
;计时器每秒运行一次函数。
这是我 viewDidLoad()
中的代码:
let checkStateTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "callCheckState:", userInfo: nil, repeats: true)
目前,我有另一个函数被调用,我想暂停计时器。我相信它应该使用:
checkStateTimer.invalidate()
但是,由于计时器在 viewDidLoad
中而不是函数中或更早声明的,函数无法访问 checkStateTimer
。
问题是,我无法在 viewDidLoad
之外声明计时器(即仅在 class 中),因为它会导致错误。
所以,我的问题是,如何获取视图,以便它在 viewDidLoad
上启动计时器,但能够在函数运行时暂停计时器。执行此操作以停止计时器的最佳方法是什么?
将您的计时器声明为 class 变量:
var checkStateTimer: NSTimer!
然后在viewDidLoad()中设置:
func viewDidLoad() {
super.viewDidLoad()
checkStateTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "callCheckState:", userInfo: nil, repeats: true)
}
然后在你的函数中使计时器无效:
func someFunction() {
checkStateTimer.invalidate()
}
我有一个用 Swift
编写的应用程序,在 viewDidLoad
中声明了 NSTimer
;计时器每秒运行一次函数。
这是我 viewDidLoad()
中的代码:
let checkStateTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "callCheckState:", userInfo: nil, repeats: true)
目前,我有另一个函数被调用,我想暂停计时器。我相信它应该使用:
checkStateTimer.invalidate()
但是,由于计时器在 viewDidLoad
中而不是函数中或更早声明的,函数无法访问 checkStateTimer
。
问题是,我无法在 viewDidLoad
之外声明计时器(即仅在 class 中),因为它会导致错误。
所以,我的问题是,如何获取视图,以便它在 viewDidLoad
上启动计时器,但能够在函数运行时暂停计时器。执行此操作以停止计时器的最佳方法是什么?
将您的计时器声明为 class 变量:
var checkStateTimer: NSTimer!
然后在viewDidLoad()中设置:
func viewDidLoad() {
super.viewDidLoad()
checkStateTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "callCheckState:", userInfo: nil, repeats: true)
}
然后在你的函数中使计时器无效:
func someFunction() {
checkStateTimer.invalidate()
}