声明期间的Swift getter语法

时间:2016-04-07 09:07:36

标签: swift

在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不同,没有标题/源分离,所以我有点困惑。如果它只是一个int,为什么首先声明一个结构?

1 个答案:

答案 0 :(得分:0)

{ get }属性通常是计算属性。您不会信任它们存储任何真实值。但是,当被问到它们时,它们会进行一些计算并根据状态返回一个值。

示例:

struct Integer {
    var value : Int
    var square : Int {
          get {
              return value * value
          }
    }
}

它的头文件看起来像:

struct Integer {
    var value : Int
    var square : Int { get }
 }

通过这个,很明显它们不是 set ,它们是计算

至于你的第二个问题,我不知道。我会在这种情况下创建一个typealias;类似的东西:

typealias qos_class_t = UInt32

但如果没有更多背景,我真的不能批评这个设计决定。