我一直在看线程re:语音检测(http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/)。
但是,我希望通过以下变体实现类似的功能。
该示例中的levelTimer
每隔.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执行其工作的方法,但仅限于特定的时间吗?
感谢。
答案 0 :(得分:0)
在listenForSounds:方法中放置一个计数器,并在每次调用方法时递增它。如果你想运行levelTimer 10秒钟,那么检查计数器何时> 333然后使计时器无效。