我在Audiokit的AUv3工作。Auv3有一个执行操作的计时器。定时器在viewDidLoad上被激活。我试着用计时器、睡眠、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)
}我尝试使用main、全局队列和用户队列。我不知道为什么AUv3计时器会影响其他实例。知道吗?最后,我使用了AKSequencer和AKMetronme,但问题是一样的。谢谢。
发布于 2022-02-04 02:01:30
问题不可能是Timer --这是因为您可能(因为这里没有显示)依赖于代码中某种类型的单例。
AUv3实例需要真正独特的依赖关系实例才能独立工作。
https://stackoverflow.com/questions/70973992
复制相似问题