Ric*_*ett 1 grand-central-dispatch swift
这是我第一次使用GCD,我承认,很抱歉,如果我是愚蠢的.我有一个dispatch_after命令,对我来说是一个方便的延迟.
我的问题是,当我发送
dispatch_after(500000000000, dispatch_get_main_queue()){
println("triggered") //or any other code
}
Run Code Online (Sandbox Code Playgroud)
闭合被立即触发(例如我已经测试了这个并且立即触发了"触发"打印).它应该需要更长的时间吗?比500秒长.
谢谢 :)
第一个参数dispatch_after(_:_:_:)不是延迟,而是一个时间点.来自文档:
when:由
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()) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |