Я сделал практический проект в Свифт, чтобы узнать, как работает NSTimer
. Существует одна кнопка для запуска таймера и одна кнопка для ее отмены. Он отлично работает, когда я нажимаю каждую кнопку один раз. Однако, когда я нажимаю кнопку запуска таймера несколько раз, я больше не могу ее аннулировать.
Вот мой код:
class ViewController: UIViewController {
var counter = 0
var timer = NSTimer()
@IBOutlet weak var label: UILabel!
@IBAction func startTimerButtonTapped(sender: UIButton) {
timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true)
}
@IBAction func cancelTimerButtonTapped(sender: UIButton) {
timer.invalidate()
}
func update() {
++counter
label.text = "\(counter)"
}
}
Я видел эти вопросы, но мне не удалось получить ответ на мой вопрос (многие из них - старые Obj-C
pre-ARC
дни, а другие - разные проблемы):
- NSTimer() - timer.invalidate не работает на простом секундомере?
- Использование NSTimer в Swift
- NSTimer не останавливается
- Невозможно аннулировать (Stop) NSTimer
- NSTimer не останавливается с недействительным
- Невозможно аннулировать, остановить обратный отсчет NSTimer - Objective C
- IOS: остановить NSTimer