2016-04-07 7 views
1

In Grand Central Dispatch, sind die QOS-Klassen wie dies unter Swift verfügbar:Swift Getter Syntax während der Deklaration

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 } 

Was bedeutet { get } bedeutet und wie sind die Werte dieser Variablen QOS an erster Stelle gesetzt? Im Gegensatz zu Obj-C gibt es keine Trennung von Header und Quelle, also bin ich irgendwie verwirrt. Wenn es nur ein int ist, warum wird eine Struktur an erster Stelle deklariert?

Antwort

0

Die Eigenschaften { get } sind normalerweise berechnete Eigenschaften. Sie trauen ihnen nicht, irgendwelche echten Werte zu speichern. Aber wenn sie danach gefragt werden, berechnen sie etwas und geben einen Wert basierend auf dem Status zurück.

Beispiel:

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

Die Header-Datei etwas aussehen würde:

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

Hierdurch ist es klar, dass sie nicht gesetzt, sie sind berechnet.

Wie für Ihre zweite Frage habe ich keine Ahnung. Ich hätte in diesen Situationen eine typealias erstellt; etwas wie:

Aber ich kann wirklich nicht diese Designentscheidung ohne mehr Kontext kritisieren.

+0

Wenn wir Swift schreiben, schreiben wir eigentlich nicht die Header-Datei. Also, was ist das wirklich? Ein "Blick" auf die Prototypen der geschlossenen Quelle? – huggie

+1

@huggie "Header" werden automatisch in Swift für Sie generiert. Wenn Sie in den Assistant-Editor gehen und Counterparts> FileName.swift (Interface) aufrufen, sehen Sie den automatisch generierten "Header". – Hamish

+0

Das ist der gleiche Header, auf den ich mich beziehe. – avismara

Verwandte Themen