Я создаю приложение, в котором я получаю значения датчика. Каждый раз, когда значение датчика изменяется, вызывается функция handleDeviceMotionUpdate, то есть несколько раз в секунду.
handleDeviceMotionUpdate вызывает следующую функцию другого класса:
func doStuff(){
delay(1){
print("some thing")
}
}
Функция задержки выглядит следующим образом, которую я нашел где-то здесь, в Stackoverflow:
func delay(_ delay:Double, closure:@escaping ()->()){
let when = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}
Я ожидал, что «что-то» будет напечатано только через одну секунду, но я считаю, что проблема в том, что doStuff () вызывается несколько раз в секунду. Можно ли каким-то образом выполнить код после определенной задержки в функции, которая вызывается несколько раз в секунду? И почему мой пример не работает?
Я думал о создании логической переменной в первом классе, которая устанавливается в значение true через 1 секунду, а затем вызывал функцию другого класса, но я думал, что это может загромождать мой код, потому что я уже сделал это где-то еще.