这是我第一次用GCD,我承认,如果我太蠢了,我会很抱歉的。我有一个后送命令,这对我来说是一个方便的延迟。
我的问题是当我发送

dispatch_after(500000000000, dispatch_get_main_queue()){
    println("triggered") //or any other code
}

立即触发关闭(例如,我已经测试过这个并立即“触发”打印)。应该花更长的时间吧?再多500秒。
谢谢:)

最佳答案

dispatch_after(_:_:_:)的第一个参数不是延迟,而是时间点。从the docs
当:由dispatch_timedispatch_walltime返回的时间里程碑。
讨论
此函数等待指定的时间,然后异步
将块添加到指定队列。
您需要构造相对于当前时间的延迟,使用dispatch_time(_:_:)

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(500 * NSEC_PER_SEC))
dispatch_after(delayTime, dispatch_get_main_queue()) { ... }

关于swift - dispatch_after时间立即触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31949034/

10-12 16:42
查看更多