Latest web development tutorials

Swift destructor Prozess

Bevor eine Instanz einer Klasse freigegeben wird, wird der Destruktor sofort aufgerufen. Verwenden Sie Stichworte deinit die destructor, verwenden ähnliche Funktion zur Initialisierung zu markieren init zu markieren. Destructors gilt nur für Klassentypen.


Destructor Verfahrensprinzip

Swift wird lösen automatisch die Instanz nicht mehr benötigt wird Ressourcen freizugeben.

Swift durch automatische Reference Counting (ARC) behandelt Speicherverwaltung Instanzen.

Normalerweise, wenn Sie nicht brauchen, um manuell Instanz freigegeben wird zu reinigen. Wenn jedoch ihre eigenen Ressourcen verwenden, müssen Sie einige zusätzliche Reinigung zu tun.

Zum Beispiel, wenn Sie eine benutzerdefinierte Klasse erstellen, eine Datei zu öffnen und einige Daten zu schreiben, müssen Sie vor der Klasseninstanz freigegeben werden, um die Datei zu schließen.

Grammatik

In der Definition der Klasse, kann jede Klasse höchstens ein destructor haben. Destructor ohne Parameter auf, ohne Klammern im Wortlaut:

deinit {
    // 执行析构过程
}

Beispiele

var counter = 0;  // 引用计数器
class BaseClass {
    init() {
        counter++;
    }
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()
print(counter)
show = nil
print(counter)

Die obige Programmausführung Ausgabe ist:

1
0

Als die Show = nil-Anweisung ausgeführt wird, zeigen die Rechner minus 1 ist, wird der Speicher freigegeben werden.

var counter = 0;  // 引用计数器

class BaseClass {
    init() {
        counter++;
    }
    
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()

print(counter)
print(counter)

Die obige Programmausführung Ausgabe ist:

1
1