如何在Swift中使用Timer (NSTimer):创建、停止和重复定时器
你好!我刚开始学习Swift,并尝试在我的应用中实现一个简单的倒计时定时器。我需要每秒更新屏幕上的值,并在10秒后停止定时器。
我在文档中找到了Timer类,但遇到了一些问题。以下是我尝试做的:
```swift
var seconds = 10
func startTimer() {
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
}
@objc func updateTimer() {
seconds -= 1
print(seconds)
if seconds == 0 {
// 如何停止定时器?
}
}
```
定时器启动并开始倒计时,但我不明白:
1. 当`seconds`变为0时,如何正确停止定时器?
2. 为什么Xcode有时会发出关于强引用循环(strong reference cycle)的警告?
3. 如何创建一个只触发一次的定时器(不重复)?
4. 有没有办法在不使用selector的情况下使用定时器,例如使用闭包?