2016-04-07 3 views
1

В Диспетчер Grand Central, классы QOS доступны под Swift, как это: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, то почему структура объявлена ​​в первую очередь?

ответ

0

Свойства, обычно называемые { 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 

Но я действительно не могу критиковать это дизайнерское решение без дополнительного контекста.

+0

Когда мы пишем Swift, мы фактически не записываем файл заголовка. Так что же это на самом деле? «Взгляд» прототипов закрытого источника? – huggie

+1

@huggie "Headers" автоматически сгенерированы в Swift для вас. Если вы зайдете в помощник редактора и перейдете в Counterparts> FileName.swift (Interface), вы увидите автоматически сгенерированный «заголовок». – Hamish

+0

Это тот же заголовок, о котором я говорю. – avismara

Смежные вопросы