是否可以在达到指定时间之前停止计时器?
is it possilbe to stop the NSTimer before it reach the specified time?
我正在使用带有 repeats: false
的计时器,所以它会 运行 一次,在那一次 运行 达到时间延迟之前我想停止执行计时器。
timer?.invalidate()
timer = nil
//is not working
下面的代码片段是我试过的示例
var timer : Timer?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
timer = Timer()
}
@IBAction func startAction(_ sender: Any) {
timer = Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false, block: { (make) in
print("ack did")
})
}
@IBAction func cancelAction(_ sender: Any) {
timer?.invalidate()
}
所以我首先点击开始,所以计时器开始并等待指定的 10 秒,
我希望当用户点击取消时停止执行。提前致谢:)
是的,这是可能的,您甚至已经展示了停止计时器的代码。您发布的内容将起作用。
注意行
timer = Timer()
在您的 viewDidLoad()
中毫无意义。不要创建一个 throw-away 计时器只是为了让你的变量 non-null
我正在使用带有 repeats: false
的计时器,所以它会 运行 一次,在那一次 运行 达到时间延迟之前我想停止执行计时器。
timer?.invalidate()
timer = nil
//is not working
下面的代码片段是我试过的示例
var timer : Timer?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
timer = Timer()
}
@IBAction func startAction(_ sender: Any) {
timer = Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false, block: { (make) in
print("ack did")
})
}
@IBAction func cancelAction(_ sender: Any) {
timer?.invalidate()
}
所以我首先点击开始,所以计时器开始并等待指定的 10 秒, 我希望当用户点击取消时停止执行。提前致谢:)
是的,这是可能的,您甚至已经展示了停止计时器的代码。您发布的内容将起作用。
注意行
timer = Timer()
在您的 viewDidLoad()
中毫无意义。不要创建一个 throw-away 计时器只是为了让你的变量 non-null