[新手问题,但在线搜索表明它并不像我预期的那么简单。使用iOS 13,Swift 5:我有一个Doubles数组,以秒为单位表示时间间隔。我想生成一系列声音(点击?),这些声音依次按这些间隔分开。我可以找到一些关于节拍器等相对较旧的主题:
Accurate timing in iOS和Accurate (Music-grade) Timing of Audio Playback
这表明使用计时器的准确性不高。这些线程已经存在了十年,并且经常使用重复的时间间隔(与从数组中读取数据相比)。我应该在哪里看?计时器?日期? DispatchQueue.main.asyncAfter?
我会使用NSTimerInterval。确保将重复设置为false并使用更新的时间值创建一个新实例。
这里是一个例子:
var startTime: NSTimeInterval
//Sart the timer
startTime = NSDate.timeIntervalSinceReferenceDate()
NSTimer.scheduledTimerWithTimeInterval(0.02,
target: self,
selector: Selector("advanceTimer:"),
userInfo: nil,
repeats: true)
//And your timer method...
func advanceTimer(timer: NSTimer)
{
//Total time since timer started, in seconds
self.time = NSDate.timeIntervalSinceReferenceDate() - startTime
//The rest of your code goes here
}