Klassen, Strukturen und Aufzählungen in Swift

Putting Klassen, Strukturen und Aufzählungen spiegelt zusammen, um ihre Gemeinsamkeiten in Swift, aber es gibt eine sehr wichtige Unterscheidung: Aufzählungen und Strukturen sind Werttypen. Instanzen von Aufzählungen und Strukturen werden kopiert, wenn sie zu einer Funktion übergeben werden oder auf eine Variable oder eine Konstante zugeordnet. Das bedeutet, dass mehrere Kopien einer Struktur oder Aufzählungs Beispiel, jede mit ihrer eigenen Werte haben können, die unabhängig von den anderen sind.

Auf der anderen Seite, sind Klassen Referenztypen. Wenn sie einer Variablen zugewiesen werden oder konstant ist oder, wenn sie an eine Funktion übergeben werden, ein Referenz zum Beispiel ist das, was passiert ist. Da es nur eine Instanz zugrunde liegt, die an Funktionen übergeben Referenzen oder zugewiesen Variablen oder Konstanten, eine Änderung der Werte dieser zugrundeliegenden Instanz in alle Kopien wider.

Werfen Sie einen Blick auf die Tabelle, die Sie die Funktionen, die in Klassen zeigt, Strukturen und Aufzählungen. Die meisten dieser Funktionen sind die meisten objektorientierten Programmiersprachen in der einen oder anderen gemeinsam. Ein paar von ihnen sind für Swift leicht neu definiert. Sie sind an der linken Seite der Tabelle gezeigt ist, und werden hier kurz beschrieben.

Merkmale der Klassen, Strukturen und Aufzählungen
FeatureKlassenStrukturenAufzählungen
InstanzenXXX
EigenschaftenXXberechnet Eigenschaften nur
MethodenXXX
Die IndizesXXX
InitialisiererXXX
ErweiterungenXXX
ProtokolleXXX
ErbeX
Typ-UmwandlungX
DeinitializersX
BOGENX
  • Instanzen: Ein Objekt, das in den meisten objektorientierten Sprachen eine tatsächliche Darstellung einer Klasse wird ein genannt Beispiel. In einigen objektorientierten Sprachen, können Sie auch eine Klasse selbst als Objekt verwendet wird (zum Beispiel, das gilt für Objective-C). Für viele Sprachen, deklarierten Variablen als struct oder enum, werden durch die genannten struct oder enum Name.

    In Swift ist es ein Beispiel von a struct oder enum, aber die Leute verwenden immer noch oft den Typnamen (wie in # 147-meineVar ist ein MyStruct# 148-) und nicht als eine Instanz einer bestimmten struct (# 147-meineVar ist eine Instanz MyStruct# 148-). Schlaf nicht über diese verlieren.

  • Eigenschaften: Sie können Eigenschaften deklarieren, die entweder gespeichert werden können oder berechnet, wie sie benötigt werden. (Aufzählungen nur Unterstützung berechnet Eigenschaften.)

  • Methoden: Sie können Methoden deklarieren, die durch jede Instanz dieser Objekte zugegriffen werden kann.

  • Indizes: Sie können Indizes erklären, dass Sie Elemente eines Typ-Instanz zugreifen können auf der Grundlage der Logik in dem Index. Beispiele sind für mehrdimensionale Objekte mehrere Indexierungsschemata vorausgesetzt, manchmal zugegriffen werden kann, als ob sie eindimensionale Arrays waren und manchmal mehreren Dimensionen verwendet. Sie sind auch nützlich in nicht-ganzzahlige Indizes verwaltet.

  • Initialisierer: Initialisierer können Sie die Eigenschaften für eine neue Instanz eingerichtet.

  • Erweiterungen: Erweiterungen können Sie hinzufügen, Methoden und Eigenschaften, ohne notwendigerweise für das Objekt den Code hat, an dem Sie sie hinzufügen. (Nur berechneten Eigenschaften mit Aufzählungen verwendet werden.)

  • Protokolle: Sie können Methoden in einem Protokoll zu definieren, die von jedem Objekt, das zu diesem Protokoll entspricht umgesetzt werden müssen.

  • Erbe: Klassen können voneinander bilden eine Unterklasse / Oberklasse Struktur erben. Eine Klasse kann eine beliebige Anzahl von Unterklassen haben, aber nur eine (oder keine) geordneten Klasse.

  • Typ-Umwandlung: Sie können eine Klasse als unter- oder übergeordnete Klasse zu behandeln, wenn die Bedingungen dies zulassen. Dies ist im Grunde eine Standardübung in der Logik. UILabel ist eine Unterklasse von UIView- Daher werden alle Instanzen UILabel sind ebenfalls Instanzen UIView. Nicht alle Instanzen UIView sind Instanzen UILabel.

  • Deinitializers: Deinitializers können Sie einfach bereinigen, bevor eine Instanz der Klasse über ist ausgeplant werden.

  • BOGEN: Automatische Referenzzählung (ARC) können Sie mehrere Instanzen einer Klasse zu haben. Wenn man sie um passieren, werden sie durch einen Verweis übergeben, so dass zum Beispiel, wenn Sie zwei Instanzen von UILabel, Setzen Sie den Text für ein UILabel hat nichts mit der Einstellung den Text für die anderen Label zu tun.

Menü