这是我第一次使用GCD,我承认,很抱歉,如果我是愚蠢的。我有一个dispatch_after命令,对我来说是一个方便的延迟。
我的问题是,当我发送
dispatch_after(500000000000, dispatch_get_main_queue()){
println("triggered") //or any other code
}
立即触发闭合(例如我已经测试了这个并且立即触发了“触发”打印)。它应该需要更长的时间吗?比500秒长。
谢谢:)
答案 0 :(得分:8)
dispatch_after(_:_:_:)
的第一个参数不是延迟,而是一个时间点。来自the docs:
时:
dispatch_time
或dispatch_walltime
返回的时间里程碑。<强>讨论强> 此函数等待直到指定的时间,然后异步 将块添加到指定的队列。
您需要使用dispatch_time(_:_:)
:
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(500 * NSEC_PER_SEC))
dispatch_after(delayTime, dispatch_get_main_queue()) { ... }