从 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()
}