2012-08-06 86 views
2

我目前正在開發一款應用程序,需要以準確的時間間隔播放聲音文件,聲音文件的持續時間可變。NSTimer準確性

我似乎記得被告知的NSTimer只需在指定時間後放置的操作壓入堆棧,而不是操作的指定時間段後中運行。這意味着如果在堆棧上有很多其他操作,則不會按時調用。

我想知道,如果這確實是正確的,如果是這樣,有越來越來保證操作的指定時間段後運行的任何方式。

任何使評論的聲音文件可能會延遲在第一時間之前,他們已經預裝避免這種情況。

+2

有趣的討論在http://stackoverflow.com/questions/4485072/accurate-timing-in-ios – CSmith 2012-08-06 20:02:06

+1

這可能有所幫助:http://stackoverflow.com/questions/3368169/accurate-music-grade-timing-音頻播放 – Adam 2012-08-06 20:03:50

+0

@Adam輝煌的鏈接 - 這正是我在我的項目中所做的。 – 2012-08-06 20:05:02

回答

5

first paragraph of Apple's NSTimer documentation,你會發現這一點:

計時器不是實時的機制;只有在添加了定時器的 運行循環模式之一運行並且能夠 檢查定時器的觸發時間是否已經過去時纔會觸發。因爲一個典型的運行循環管理各種 輸入源,的 用於定時器的時間間隔的有效分辨率被限制爲50-100毫秒 的量級。如果長時間標註或 同時運行循環是在沒有監控定時器模式期間發生計時器的發射時間時,計時器 不觸發下一次運行循環檢查計時器,直到。 因此,實際的時間在該計時器觸發潛在可 調度燒成時間後的一個時間週期顯著。

所以,你一定會運行(或播放你的聲音,你的情況)您預定的發射時間後,但不一定正是你的時間。