【发布时间】:2014-12-09 00:47:39
【问题描述】:
我已经盯着我的代码看了好几个小时了,所以我想我可以试着来这里看看新的眼睛。我需要创建一个计时器,所以我使用下面的代码来做到这一点。第一行是我创建计时器的地方,第二部分是我的 decrementTime 方法。这是用于 IOS 应用程序的 Objective C 中的。这是我第一次在 StackOverflow 上发帖(我通常会找到我正在寻找的答案),所以请让我知道我不遵守的任何不成文的规则。
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(decrementTime) userInfo:nil repeats:YES];
- (void)decrementTime{
self.timeLeft--;
}
我将在此处添加使第一个计时器无效的位置
-(IBAction)infoClick:(id)sender{
[_timer invalidate];
}
然后这里是信息消息,我在其中创建另一个计时器
- (void)hideInfoMessage {
_secondTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(decrementTime) userInfo:nil repeats:YES];
}
澄清我的代码:事件的顺序从我的第一个代码块(创建计时器)开始。然后调用我的第二个代码块(使计时器无效)。然后最后我的第三个代码块被调用(创建一个新的计时器)。
我知道它是双倍递增,因为当我运行代码时,我可以直观地看到计时器双倍递增。
【问题讨论】:
-
FWIW,这里没有“不成文”的规则 - 请查看常见问题解答,了解您需要了解的所有内容(以及更多内容)。祝你好运
-
你怎么知道它被双倍递减?
-
尝试将
NSLog(@"%s",__FUNCTION__);添加到您的decrementTime,以便每次调用时都能看到 -
根据您的更新代码,您正在创建两个不同的计时器并且都指向同一个选择器。这可以解释双倍递减。
-
@rmaddy 很抱歉我仍然有点困惑。当我使第一个计时器无效时,它不再存在了吗?
标签: ios objective-c timer