Два 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, а затем аннулируйте таймер.