我的countDown计时器有一个奇怪的问题。该计时器从设定时间(即60秒)开始倒计时。这段代码放在myViewDidLoad方法中。除非我回去再加载视图,否则一切正常。每次加载视图时,倒计时都会增加1秒。
例如:
我的代码如下。有谁知道为什么会这样?我需要在某个地方发布一些东西吗?谢谢!
countDown=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self
selector:@selector(TimeOver) userInfo:nil repeats:YES];
答案 0 :(得分:6)
每次加载视图时,都会创建一个新计时器,但旧计时器仍然存在。在计时器的操作方法TimeOver
中,您正在递减一个跟踪秒的索引变量,每个计时器每次触发时都会运行该方法。所以,如果你有三个定时器,索引每次都会减少三个。
您需要在视图加载时不创建新的计时器,或者更好地在视图消失时销毁计时器:
[countDown invalidate];
countdown = nil;
并在重新出现时重新创建它。
另外,请注意您的计时器的操作方法具有错误的签名。它应该是一个不返回任何内容并且接受一个参数的方法,它就是计时器本身,如下所示:
- (void)timeOver: (NSTimer *)tim;
此外,Cocoa方法不应以大写字母开头。