我目前正在开发一个应用程序,它需要一个声音文件以精确的时间间隔播放,这是一个可变的持续时间。
我似乎记得有人告诉我,NSTimer只是在指定的持续时间之后将一个操作放在堆栈上,而不是在指定的持续时间之后运行的操作。这意味着,如果在堆栈上有许多其他操作在它之前,它将不会被及时调用。
我想知道这是否确实是正确的,如果是的话,是否有办法保证一个操作在指定的持续时间之后运行。
在任何评论声音文件可能第一次被延迟之前,它们已经被预先加载以避免这种情况。
发布于 2012-08-06 20:00:06
在first paragraph of Apple's NSTimer documentation中,您会发现以下内容:
定时器不是一种实时机制;它只在计时器被添加到的运行循环模式之一正在运行并且能够检查计时器的触发时间是否已过时才会触发。由于一个典型的运行循环管理的各种输入源,计时器的时间间隔的有效分辨率限制在50-100毫秒。如果计时器的触发时间发生在长时间的标注期间,或者当运行循环处于不监视计时器的模式时,则计时器直到下一次运行循环检查计时器时才会触发。因此,,计时器触发的实际时间可能是计划的触发时间之后的一段重要时间。
所以你一定会在你预定的射击时间后运行(或者播放你的声音),但不一定是在你的时间。
https://stackoverflow.com/questions/11835023
复制相似问题