dispatch_after 在 swift 中执行时不会 运行 代码在它下面

dispatch_after wont run code under it when executed in swift

当我使用 dispatch_after 方法产生延迟时,它从不执行它之后的代码。我需要 return 一个数组,但它总是跳过它。

这里是matt's延时方法:

func delay(delay:Double, closure:()->()) {
    dispatch_after(
        dispatch_time(
            DISPATCH_TIME_NOW,
            Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
}

错误发生的方法如下:

func rollDice() -> Array<Int> {
    var diceArray = [Int]()
    let timerTime:NSTimeInterval = 0.3
    delay(timerTime) {
        //my code
    }
    return diceArray //NEVER GETS HERE
}

你好像没明白什么是延迟。代码将按以下顺序运行:

func rollDice() -> Array<Int> {
    var diceArray = [Int]() // ONE
    let timerTime:NSTimeInterval = 0.3
    delay(timerTime) {
        // THREE
    }
    return diceArray // TWO
}

因此,在 delay 中的代码运行之前,您的 rollDice 将 return 一个空的 diceArray。因此,从这个角度来看,无论您在 delay 中做什么都是无效的;它对 rollDice returns.

没有任何影响,也可能没有影响