如何在运行选择器功能之前清除计时器?

Posted

技术标签:

【中文标题】如何在运行选择器功能之前清除计时器?【英文标题】: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 就足够了。也许您创建计时器的次数比您想象的要多?发布一个演示您遇到的问题的最小代码集。 谢谢,我创建计时器的次数比我还多! 【参考方案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】:

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

【讨论】:

以上是关于如何在运行选择器功能之前清除计时器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用程序进入后台或终止时运行计时器

日期选择器中的小时:分钟:秒如何快速

Vue清除所有JS定时器

jq刷新页面会定时器会清除么

清除控件后,我应该如何停止控件中的计时器?

清除后再次启动间隔