从苹果iBook的定义中我找不到:
有人能解释一下dispatch_after
的 struct 吗?
dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)
从苹果iBook的定义中我找不到:
有人能解释一下dispatch_after
的 struct 吗?
dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)
更清楚地了解 struct :
dispatch_after(when: dispatch_time_t, queue: dispatch_queue_t, block: dispatch_block_t?)
dispatch_time_t
是UInt64
.dispatch_queue_t
实际上是一个NSObject
的别名,但您应该使用熟悉的GCD方法来获取队列.该街区迅速关闭.具体来说,dispatch_block_t
被定义为() -> Void
,相当于() -> ()
.
用法示例:
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
print("test")
}
EDIT:
我建议使用@matt's really nice delay
function.
EDIT 2:
在Swift 3中,GCD将有新的包装.看这里:https://github.com/apple/swift-evolution/blob/master/proposals/0088-libdispatch-for-swift3.md
最初的示例将在Swift 3中编写如下:
let deadlineTime = DispatchTime.now() + .seconds(1)
DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
print("test")
}
请注意,您可以将deadlineTime
声明写为DispatchTime.now() + 1.0
,并获得相同的结果,因为+
运算符被覆盖如下(对于-
类似):
func +(time: DispatchTime, seconds: Double) -> DispatchTime
func +(time: DispatchWalltime, interval: DispatchTimeInterval) -> DispatchWalltime
这意味着,如果你不使用DispatchTimeInterval
enum
,只写一个数字,就假定你使用的是秒.