如何向DispatchQueue添加时间延迟变量[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

首先,我使用arc4random创建了一个randomDelay值

然后我想将randomDelay值添加到DispatchQueue以创建随机时间延迟变量

这是我的代码:

func animation1() {

UIView.animate(withDuration: 1, animations: {

    // various code

}, completion: { (true) in

    //delay calling the function by the randomDelay value of '0' to '2' seconds
    let randomDelay = arc4random_uniform(3)
    DispatchQueue.main.asyncAfter(deadline: .now() + randomDelay) { // the randomDelay value throws an unresolved identifier 'randomDelay' error
        self.showAnimation2() // Go to the next function
    }
  })
}

谢谢

ios swift grand-central-dispatch
3个回答
1
投票

你需要将randomDelay施放到Double。然后你按如下方式使用它:

let randomDelay = arc4random_uniform(3)
DispatchQueue.main.asyncAfter(deadline: .now() + Double(randomDelay)) {
}

1
投票

我想这会对你有所帮助!

let aRandomVar = 2   // change 2 to desired number of seconds
 let when = DispatchTime.now() + Double(aRandomVar)
    DispatchQueue.main.asyncAfter(deadline: when) {
       // Your code with delay
    }

1
投票

你没有提到随机数是什么时间单位。我建议你选择一个单位。例如,秒:

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(Int(randomDelay)), execute: {...})

或毫秒:

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(Int(randomDelay)), execute: {...})
© www.soinside.com 2019 - 2024. All rights reserved.