两个NSTimers,其中一个管理另一个的活动?

时间:2013-07-17 23:02:02

标签: ios nstimer voice-recording

我一直在看线程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执行其工作的方法,但仅限于特定的时间吗?

感谢。

1 个答案:

答案 0 :(得分:0)

在listenForSounds:方法中放置一个计数器,并在每次调用方法时递增它。如果你想运行levelTimer 10秒钟,那么检查计数器何时> 333然后使计时器无效。