在 Grand Central Dispatch 中,QOS 类在 Swift 下可用,如下所示:
public struct qos_class_t : RawRepresentable, Equatable {
public init(_ rawValue: UInt32)
public init(rawValue: UInt32)
public var rawValue: UInt32
}
@available(iOS 8.0, *)
public var QOS_CLASS_USER_INTERACTIVE: qos_class_t { get }
@available(iOS 8.0, *)
public var QOS_CLASS_USER_INITIATED: qos_class_t { get }
{ get }
是什么意思,这些 QOS 变量的值最初是如何设置的?与 Obj-C 不同,没有 header /源代码分离,所以我有点困惑。如果它只是一个 int,为什么首先声明一个结构?
最佳答案
{ get }
属性通常是计算属性。您不信任他们存储任何实际值。但是,当被要求时,它们会进行一些计算并返回一个基于状态的值。
示例:
struct Integer {
var value : Int
var square : Int {
get {
return value * value
}
}
}
它的头文件看起来像这样:
struct Integer {
var value : Int
var square : Int { get }
}
由此可见,它们不是设置,而是计算。
关于你的第二个问题,我不知道。在这种情况下,我会创建一个 typealias
;类似的东西:
typealias qos_class_t = UInt32
但我真的不能在没有更多上下文的情况下批评这个设计决定。
关于声明期间的 Swift getter 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36471516/