我正在使用NSTimer运行循环计数,然后在某些时候(单击“开始”)我需要再次运行它。第一个计时器没有停止,因此倒计时速度随着每次运行功能而增加
- (IBAction)startbutton:(id)sender {
timeTick = arc4random_uniform(7)+3;
timeofstart = CACurrentMediaTime();
chosentime = timeTick;
NSLog(@"chosentime værdien er %f", chosentime);
[timer invalidate];
timer = nil;
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];
}
- (void) tick {
if (timeTick == 0) {
winnerlabel2.text = @"GO !!!";
}
else {
timeTick --;
NSLog(@"%f", timeTick);
}
}
答案 0 :(得分:1)
在这里,不清楚timer
在前两行中是指什么。第3行是创建一个新的局部变量。看起来你必须有一个在其他地方创建的实例变量timer
。您正在使该计时器无效,但随后创建一个新的timer
作为没有永久句柄的局部变量(因为它在此方法调用结束时超出范围后死亡)并因此在第一个计时器之后的每个计时器失效。
[timer invalidate];
timer = nil;
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];
从......改变第3行
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];
为...
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];