我正在开发一款仅支持iOS7的应用程序,该应用程序需要显示带有滴答声的时钟。我使用了1s的NSTimer,我使用AVAudioPlayer每秒播放滴答音。
不幸的是,时间略有偏差。我已经测量过计时器关闭时间在2到22千秒之间,你不会觉得这很重要,但是滞后会造成紧张的紧张感......有点像心脏颤动: - )< / p>
我看了一下,但听起来像使用音频队列服务是唯一的方法..而且我真的不想再深入研究那个特定框架的深度。
我的问题:是否有其他方法可以在iOS 7中获得精确安排的声音事件,如果失败,那么在某处可以使用适当的音频队列服务包装框架?或者更好的是还有一种更精确地安排NSTimers的方法吗?
答案 0 :(得分:0)
使用NSTimer
,libdispatch
中的任何一个,或者生成一个在tick时间内休眠的线程,都依赖于及时调度的底层线程。内核并不保证这一点,你观察时序抖动也就不足为奇了;你观察到的延迟看起来很合理。
NSTimer
可能会执行最糟糕的这些,因为您还在与通过它传递的其他事件竞争。
我认为您的选择是使用音频队列服务,使用AVAudioPlayer调度事件的实时线程,或者自己将音频呈现给remoteIO
单元。
我认为AVPlayer不会对时序提供任何特别的保证。