как остановиться, таймер инициировал runloop?

если я настроил 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 не позволяет выяснять, если такое "сообщение" доступно. и это было бы чрезвычайно неэффективно, если я зарегистрирую для каждого вызова функции новый таймер.

9
задан nico 9 August 2010 в 09:21
поделиться

1 ответ

Вам необходимо отправить сообщение о недействительности на таймер, чтобы удалить его из цикла выполнения.

См. Документ

[anyTimer invalidate];
25
ответ дан 4 December 2019 в 08:32
поделиться