声明期间的 Swift getter 语法

标签 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 不同,没有 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/

相关文章:

ios - 如何处理任务 : Inquiry with Choices and Responses (Engine)

ios - 在 Firebase 中,检索到的数据不会从 .observeEventType 方法中获取

ios - 从 URL(图片)发出加载 unnotificationAttachment

swift - 如何通过set函数删除我喜欢删除到UserDefaults的indexPath.row

ios - 使用 UIPanGestureRecognizer 更新约束

objective-c - 用反射修改字符串

ios - 在 WKWebView 中显示 'Use camera' 选项

xml - 需要帮助使用 Alamofire 进行 POST 调用以检索 XML

ios - 检测表在 iOS 13 上被取消

ios - 以编程方式创建的 UITableView 不显示任何内容