我如何启动和停止NSTimer?
我开发了Stop Watch应用程序。 在我的应用程序中,有两个UIButtons, StartBtn
和StopBtn
,并且还使用了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; } }