准确的NSTimer(NSTimer Accuracy)

2019-06-26 19:26发布

我目前的工作,需要一个声音文件在精确的时间间隔,这是在持续时间变量时播放的应用程序。

我似乎记得被告知的NSTimer只需在指定时间后放置的操作压入堆栈,而不是操作的指定时间段后中运行。 这意味着,如果有很多之前在堆栈上其他操作,就不能按时调用。

我想知道,如果这确实是正确的,如果是这样,有越来越来保证操作的指定时间段后运行的任何方式。

任何使评论的声音文件可能会延迟在第一时间之前,他们已经预装避免这种情况。

Answer 1:

在苹果公司的NSTimer文档的第一个段落 ,你会发现这一点:

计时器不是实时的机制; 它触发只有在其计时器已添加运行循环模式之一运行,并能够检查是否计时器的发射时间已经过去了。 因为一个典型的运行循环管理的各种输入源,用于定时器的时间间隔的有效分辨率被限制为50-100毫秒的数量级上。 如果在很长的标注或同时运行循环是在未监视定时器的模式发生了计时器的烧成时间,计时器不火,直到下一次运行循环检查计时器。 因此,实际的时间,让定时器触发潜在可能的时间预定发射时间后,显著的时期。

所以,你一定会运行(或播放你的声音,你的情况),您预定的发射时间但不一定正好你的时间。



文章来源: NSTimer Accuracy