如何停止计时器触发的runloop?

时间:2010-07-19 07:51:43

标签: iphone objective-c timer nsrunloop

如果我设置了类似的runloop:

NSRunloop* loop = [NSRunloop currentRunLoop];
[runLoop addTimer:anyTimer forMode:NSDefaultRunLoopMode];

我能再次阻止它吗? 或者是忽略我用来触发进一步行动的通知的唯一方法吗?

好的,我举一个问题的例子:

-(void)blinkeffekt:(double)pollingTime{

NSRunLoop* runLoop = [NSRunLoop currentRunLoop];

if (pollingTime != 0) {
    NSTimeInterval interval =(double)pollingTime / 1000;
    NSTimer timer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(polling) userInfo:nil repeats:YES];
    [runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
}
else {

    [timer invalidate];
}

}

肯定,这里有几个错误 - 毫无疑问。但我想,它显示了我的问题。直到现在,这个答案还不能解决。

我需要运行一个计时器并在以后停止它。理想情况下,在课堂上的另一个功能。 但是后来我再也无法访问“计时器”了,如果这样的“消息”可用,则runloop不允许弄清楚。 如果我为每个函数调用注册一个新的计时器,那将是非常无效的。

1 个答案:

答案 0 :(得分:24)

您需要向计时器发送一条无效消息,以将其从RunLoop中删除。

See Doc

[anyTimer invalidate];