【问题标题】:How to Clear the timer before running a Selector Function?如何在运行选择器功能之前清除计时器?
【发布时间】:2015-02-05 19:00:43
【问题描述】:

我有一个这样的计时器:

var timer = NSTimer.scheduledTimerWithTimeInterval(time, target: self, selector: Selector("finished"), userInfo: nil, repeats: false)

带有“time”的就是 NSTimeInterval 用于运行这个计时器,例如是 10.0 秒。 “完成”是一个在定时器达到 10.0 秒时运行的函数。 如果我的计时器正在运行,例如当我的计时器达到 4.0 秒时,我想清除或停止计时器或类似的东西,然后再次重新启动计时器。我怎样才能做到这一点?我已经尝试过使用:

timer.invalidate()

并再次重新创建计时器,但在 6.0 秒后仍会调用“完成”函数。 请帮忙。

【问题讨论】:

  • 调用invalidate 就足够了。也许您创建计时器的次数比您想象的要多?发布一个演示您遇到的问题的最小代码集。
  • 谢谢,我创建计时器的次数比我还多!

标签: swift xcode6 watchkit


【解决方案1】:

希望对你有帮助……

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

func result() {
self.elapsedTime++

self.handler(elapsedTime)

if self.elapsedTime == self.duration {
  self.stop()
}
}

func stop() {
timer.invalidate()
}

【讨论】:

    【解决方案2】:

    我发现了一个问题,我添加的计时器比我想象的要多,所以另一个计时器仍然运行并占用我的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 2023-03-09
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      相关资源
      最近更新 更多