[英]How Can I Start And Stop NSTimer?
我开发秒表应用程序。 在我的应用程序中,有两个UIButton, StartBtn
和StopBtn
,我也使用NSTimer
。
现在,我想在用户单击StartBtn
时启动NSTimer
,并且在您单击StopBtn
时也停止。
我知道NSTimer
被[MyTimerName invalidate];
停止了[MyTimerName invalidate];
方法,但我不知道如何再次启动NSTimer
?
NSTimer
类使用起来有点尴尬; 而不是将创建/销毁与开始/停止分离开来,而是将它们全部组合在一起。 换句话说,计时器在创建后立即启动,在销毁后立即停止。
因此,您需要使用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");
}
您总是可以用火重新启动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];
然后是委托函数:
-(void)handleTimer: (id) sender
{
//Update Values in Label here
}
并停止计时器
-(void)stopTimer: (id) sender
{
if(myTimerName)
{
[myTimerName invalidate];
myTimerName = nil;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.