2013-07-17 44 views
0

我一直在看線程重新:語音檢測(http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/)。兩個NSTimers與一個管理另一個的活動?

我正在尋找實施類似的東西,但是,以下變化。

該示例中的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工作的一種方式,但只有特定的時間?

謝謝。

+0

我已經發布了另一種方式,但我測試了你的方法,它對我有用。你在做什麼,在listenForSounds:? – rdelmar

回答

0

在listenForSounds:方法中放入一個計數器,並在每次調用方法時增加一個計數器。如果要運行levelTimer 10秒鐘,則檢查計數器> 333的時間,然後使計時器無效。