Два NSTimers с одним, управляющим деятельностью другого?

Я смотрю на тему re: обнаружение голоса ( http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/).

Однако я собираюсь реализовать нечто подобное со следующим вариантом.

levelTimer в этом примере стреляет непрерывно каждые 0,03 секунды. По сути, мне нужно обернуть вокруг него еще один таймер, чтобы процесс голосовой проверки продолжался, скажем, 10 секунд.

Я обнаружил, что что-то вроде:

outerTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                              target:self
                                            selector:@selector(outerTimerFinished:)
                                            userInfo:nil
                                             repeats:NO];

levelTimer = [NSTimer scheduledTimerWithTimeInterval:0.03
                                              target:self
                                            selector:@selector(listenForSounds:)
                                            userInfo:nil
                                             repeats:YES];

…где outerTimerFinished вызовы методов [levelTimer invalidate] не работает - может быть из-за блокировки потока?

Так может ли кто-нибудь помочь мне определить, как levelTimer будет выполнять свою работу, но только в течение определенного времени?

Благодарю.

1 ответ

Решение

Установите счетчик в методе listenForSounds: и увеличивайте его при каждом вызове метода. Если вы хотите, например, запустить levelTimer в течение 10 секунд, проверьте, когда счетчик> 333, а затем аннулируйте таймер.

Другие вопросы по тегам