当 运行 AUv3 的某些实例时,Audiokit 中的 AUv3 中的计时器发生冲突

Timers conflicst in AUv3 in Audiokit when running some instances of the AUv3

我正在使用 Audiokit 中的 AUv3。 Auv3 有一个执行操作的计时器。计时器在 viewDidLoad 上激活。 我尝试使用 Timer、usleep、DispatchQueue.asyncAfter 和 DispatchSourceTimer。他们都工作正常。问题是当 运行 启用 AUv3 的某些实例时,计时器会根据 AUv3 实例的数量重复触发时间或无法正常工作。 cpu 充电没有问题。 有什么办法可以同时在 Auv3 的某些实例中 运行 一个计时器,而它们之间不会发生冲突吗? 我的一些计时器:

func queue1() {
    
    let currentDateTime = Date()
    DispatchQueue.init(label: String(currentDateTime.timeIntervalSinceReferenceDate)).asyncAfter(deadline: .now() + .milliseconds(Int(1000 / self.slidervalue))) {
     
        if self.closeQueue == 0 {
             self.queue1()
        self.makeTimer()
       }
      }
}
func usleep1(){
    Darwin.usleep(10000)
    usleep1()
    makeTimer()
    
}
func timer1(){
    timer = Timer.scheduledTimer(timeInterval: Double(timeInterval), target: self, selector: #selector(self.makeTimer), userInfo: nil, repeats: true)
     }

我已经尝试使用主队列、全局队列和用户队列。我不知道为什么 AUv3 计时器会影响其他实例。任何的想法?。 最后我使用了 AKSequencer 和 AKMetronme 但问题是一样的。 谢谢

问题可能不在于 Timer -- 您可能(因为此处未显示)依赖于代码中的某种单例。

AUv3 实例需要具有真正独特的依赖实例才能独立运行。