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