如何在 swift 中停止函数

How to stop function in swift

所以我在 swift 中做一个小计时器应用程序,我只有 2 个按钮。一个用于启动计时器,一个用于停止计时器并将值重置为 0。我已经弄清楚了所有内容,并且我有一个名为计时器的函数,它每秒为变量 "Time" 增加一个值。问题是,当我单击“停止”按钮时,它会将值重置为 0,但它会再次计数。

问题是如何从 运行 停止该功能。

这是一些代码

var time = 0

func result() {
    time++
    print(time)
}

@IBAction func clickToStart(sender: AnyObject) {
    result()
}

@IBAction func clickToStop(sender: AnyObject) {
    time = 0
    print(time)
}

override func viewDidLoad() {
    super.viewDidLoad()

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

让你的计时器成为一个成员变量并在其上调用 timer.invalidate()

将变量计时器更改为实例变量。让它变弱,因为系统拥有它,当你停止计时器时它会自动释放。

在您的 clickToStop 方法中,调用 timer.invalidate()

正如其他人指出的那样,使用 timer.invalidate() 函数,但您也可以使用标志变量,以防您正在做与时间无关的其他事情或希望停止其他操作。

基本上,您可以只创建一个 bool 变量,当用户停止操作时,使 bool 为真。在另一个函数中,如果 bool 为真则不执行操作,除非它为假。这适用于静音按钮。

就像在我的游戏中一样,当游戏结束时,我有一个 bool 变量 touchesInvalid,它位于 touchesBegan 函数的最顶部。如果 touchesInvalid bool 为真,则用户不能再执行任何涉及触摸的操作。