NSTimer() - timer.invalidate не работает с простым секундомером?

Я как бы на стене, что делать, программа работает, но timer.invalidate() не работает? Любые советы приветствуются.

Я работал с этой программой в прошлом и работал над ней, а timer.invalidate() работал безупречно. Я не думаю, что это связано с тем, что я включил его в функцию, потому что, прежде чем он не работал, когда я просто набрал "timer.invalidate()" вместо "stop()"

Всякий раз, когда я нажимаю кнопку "Отмена" на симуляторе iOS, он просто сбрасывает его обратно на 0, но продолжает подсчитывать.

Спасибо заранее.

import UIKit

class ViewController: UIViewController {
var timer = NSTimer()
var count = 0
@IBOutlet weak var timeDisplay: UILabel!
@IBAction func playButton(sender: AnyObject) {
    //play button
    var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)
}

@IBAction func resetTimer(sender: AnyObject) {
    //cancel button
    stop()
    count = 0
    timeDisplay.text = "0"
}


@IBAction func pauseButton(sender: AnyObject) {
    stop()
}

func result() {
    count++
    timeDisplay.text = String(count)
}

func stop () {
    timer.invalidate()
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
 }
}

Ответ 1

В playButton() вы определяете другой таймер, который не может быть признан недействительным извне этой функции - поэтому, вызывая timer.invalidate(), вы аннулируете только var timer = NSTimer(), который не имеет в нем никакого установленного таймера.

Итак, замените

var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)

с

timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true)