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.
没有任何影响,也可能没有影响
当我使用 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.