Ios 斯威夫特的时间过得很快

Ios 斯威夫特的时间过得很快,ios,swift2,nstimer,Ios,Swift2,Nstimer,我正在用NSTimer做秒表。我用了三个按钮来播放、暂停和停止。这三个都很好。但当我多次点击播放按钮时,它开始快速计数。之后,暂停和停止按钮不工作。我知道,通过多次单击“播放”,我启动了许多计时器,但我不明白的是,为什么要暂停并停止不工作?使该类的计时器对象全局化 在播放前检查计时器检查isValid像这样如果(timer.isValid==false)则启动计时器,否则不执行任何操作。关于停止和暂停,如果计时器有效,则停止或暂停。感谢您的回答。但这是解决问题的办法。我想知道为什么我们不能停止计

我正在用
NSTimer
做秒表。我用了三个按钮来播放、暂停和停止。这三个都很好。但当我多次点击播放按钮时,它开始快速计数。之后,暂停和停止按钮不工作。我知道,通过多次单击“播放”,我启动了许多计时器,但我不明白的是,为什么要暂停并停止不工作?

使该类的计时器对象全局化


在播放前检查计时器检查
isValid
像这样
如果(timer.isValid==false)
则启动计时器,否则不执行任何操作。关于停止和暂停,如果计时器有效,则停止或暂停。

感谢您的回答。但这是解决问题的办法。我想知道为什么我们不能停止计时器。为什么使用timer.invalidate()不工作?我认为您每次都在为计时器创建新对象,当您创建新对象时,旧对象将运行,而您丢失了旧计时器引用;当您尝试无效时,只有新创建的对象将无效,而旧对象正在运行,但您丢失了它的引用,因此您无法使计时器对象无效,因为它是全局的。请参阅play button@IBAction func playButton(发送方:AnyObject){//if check{//check=false timer=NSTimer.scheduledTimerWithTimeInterval(1,目标:self,选择器:选择器(“增量”),userInfo:nil,repeats:true)}我的意思是,当您调用scheduledTimer时,检查timer是否有效,因为如果您在开始单击时调用多个timer scheduledTimer,则会有许多针对计时器创建的引用,放置条件如下
if(!timer.isValid){timer=[NSTimer scheduledTimerWithTimeInterval:1目标:自选择器:@selector(progressTimer)userInfo:nil repeats:YES];}
ohk我明白你的意思了。问题是有很多关于计时器的引用,invalidate()函数只能使计时器最近的引用无效。非常感谢。:)