例如,在下面的代码行中:
DispatchQueue.global(qos: .userInitiated).async { ... }
为什么
.userInitiated
以句点开头?这是从Objective C继承而来的还是Swift特有的? 最佳答案
注意:底部的 TLDR 版本
这称为Implicit member expression。
因此,只要Swift知道类型,就可以经常忽略键入它,例如
let colour: UIColor = .red
它通常用于枚举值和静态类型,并且可以用于将参数传递给函数,例如上面的DispatchQueue
示例。另一个简化的示例是:enum Colors {
case yellow, blue, red, green
}
因此,如果您具有此功能。func draw(withColor: Colors) {
}
您应该可以使用.prefix来传递枚举,就像这样draw(withColor: .yellow)
快捷方式更冗长的方式是:draw(withColor: Colors.yellow)
解决方案为了具体回答您的问题,此处的
.userInitiated
实际上是DispatchQoS的静态属性,因此它只是键入DispatchQoS.userInitiated
的一种较短方法。 Swift可以在知道所需类型为DispatchQoS
的情况下缩短它的时间关于Swift编程语言,以句点开始属性是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38815075/