【发布时间】:2013-03-27 09:55:36
【问题描述】:
我现在正在学习 Mac OS X 编程。我的第一个项目是写一个简单的秒表。我知道您可以使用 NSTimer,但我想如果我自己完成所有工作,我会学到更多。该应用程序运行良好。但是在恢复秒表后,它会跳过每秒的数字..
代码如下:
- (IBAction)stop:(id)sender {
started = FALSE;
NSLog(@"Stop pressed: %i", started);
}
- (IBAction)start:(id)sender {
if(!started){
started = TRUE;
[self tock:nil];
}
else {
started = FALSE;
}
}
- (void) tock:(id)sender {
if(started == TRUE) {
seconds++;
};
[self performSelector:@selector(tock:) withObject:(self) afterDelay:(1.0)];
_anzeige.stringValue = [NSString stringWithFormat:(@"%i"), seconds];
}
【问题讨论】:
-
当您在点击停止和再次点击开始之间等待 2 秒时,您是否看到了这种行为?看起来你至少在点击 stop 后仍然有一个 tock 排队,它将在 1 秒后触发,导致该步骤触发,然后重新开始该过程。如果您在不到一秒的时间内单击开始,您将有 2 个在队列中,它们将分别触发并分别重生。
-
我认为你是对的。似乎它在排队...恢复后直接看到丢失的数字闪烁...几秒钟后您看到每个数字但间隔更短...我需要如何更改代码?是的,我知道你可以用不同的方式做,但我想知道这种方式的缺陷..我还在学习
标签: iphone ios objective-c cocoa-touch nstimer