从苹果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_tUInt64.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,只写一个数字,就假定你使用的是秒.

Swift相关问答推荐

如何将趋势线添加到线性图中?

如何使用快速宏用来自函数的关联值来初始化枚举?

带有文本输入自动大小写修饰符的SwiftUI Textfield问题

在MacOS上检测键盘是否有Globe键

为什么要在SWIFT RandomAccessCollection协议中重新定义元素类型?

允许视图在视图内更改

本地对象的异步/等待引用捕获总是安全的还是理论上不安全?

在Equatable上引用运算符函数==要求Dictionary.Values符合Equatable

SwiftUI:按钮的圆形边缘的边框尺寸加倍

并发执行代码中捕获的 var 的变异

从 Int 到 String 的属性更改引发 SwiftUI 视图不更新

关联满足约束时的快速协议方法

SwiftUI:调用以编程方式创建的视图的函数

ZStack 中的 ProgressView 与 View 的行为不同

将阻塞函数集成到 Swift 异步中

如何有条件地格式化 SwiftUI 代码

FirebaseStorage:如何删除目录

iOS:检测设备是否为 iPhone X 系列(无框)

SwiftUI - 呈现工作表后导航栏按钮不可点击

使用 JSONEncoder 对类型为 Codable 的变量进行编码