我正在为我的 mac 在 Objective c 中为自己编写一个简单的计时器程序。计时器正确倒计时,但我得到了死亡的旋转风车。我怎样才能让风车消失?我认为这是因为我有一个无限循环,但必须有办法绕过它。
我有一个在按钮单击时触发的 IBAction(按钮为启动)。从那里,它调用另一个函数来完成这项工作。
这是我的 IBAction:
- (IBAction)timerStart:(id)sender {
self.timerDidPause = NO;
[self timerRunning];
}
这是 timerRunning:
- (void)timerRunning {
for (;;) {
usleep(1000000);
if (self.timerDidPause == YES) {
}
else {
if (self.seconds == 0) {
if (self.minutes == 0) {
[self timerDone];
break;
}
else {
self.seconds = 59;
self.minutes = self.minutes - 1;
[self formatTimerLabel:self.hours :self.minutes :self.seconds];
}
}
else {
self.seconds = self.seconds - 1;
[self formatTimerLabel:self.hours :self.minutes :self.seconds];
}
}
}
}
在这个函数中,函数 formatTimerLabel 被调用,所以这里是:
- (void)formatTimerLabel:(int)hours
:(int)minutes
:(int)seconds {
NSString *minuteString = [[NSString alloc] init];
NSString *secondString = [[NSString alloc] init];
if (minutes < 10) {
minuteString = [NSString stringWithFormat:@"0%d", minutes];
}
else {
minuteString = [NSString stringWithFormat:@"%d", minutes];
}
if (seconds < 10) {
secondString = [NSString stringWithFormat:@"0%d", seconds];
}
else {
secondString = [NSString stringWithFormat:@"%d", seconds];
}
[self.timerLabel setStringValue:[NSString stringWithFormat:@"%d:%@:%@", hours, minuteString, secondString]];
[self.timerLabel display];
}