我如何启动和停止NSTimer?

我开发了Stop Watch应用程序。 在我的应用程序中,有两个UIButtons, StartBtnStopBtn ,并且还使用了NSTimer

现在,我想在用户点击StartBtn时启动NSTimer ,并且在StopBtn单击时也停止。

我知道NSTimer[MyTimerName invalidate];停止[MyTimerName invalidate]; 方法,但我不知道如何再次启动NSTimer

NSTimer类使用起来有些尴尬; 而不是从开始/停止分离创build/销毁,它们全部汇集在一起​​。 换句话说,计时器一旦创build就立即启动,一旦被破坏就停下来。

因此,您需要使用NSTimer对象的存在作为标志来指示它是否正在运行; 像这样的东西:

 // Private Methods @interface MyClass () { NSTimer *_timer; } - (void)_timerFired:(NSTimer *)timer; @end @implementation MyClass - (IBAction)startTimer:(id)sender { if (!_timer) { _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(_timerFired:) userInfo:nil repeats:YES]; } } - (IBAction)stopTimer:(id)sender { if ([_timer isValid]) { [_timer invalidate]; } _timer = nil; } - (void)_timerFired:(NSTimer *)timer { NSLog(@"ping"); } 

你总是可以用fire再次启动一个NStimer

  [timer fire]; 

要阻止它:

  [timer invalidate]; //remember to set timer to nil after calling invalidate; timer = nil; 

你可以通过启动计时器

 #define kRefreshTimeInSeconds 1 NSTimer *myTimerName; . . myTimerName = [NSTimer scheduledTimerWithTimeInterval: kRefreshTimeInSeconds target:self selector:@selector(handleTimer:) userInfo:nil repeats:YES]; 

那么委托function:

 -(void)handleTimer: (id) sender { //Update Values in Label here } 

并停止计时器

 -(void)stopTimer: (id) sender { if(myTimerName) { [myTimerName invalidate]; myTimerName = nil; } }