Swift - Deinicjalizacja
Zanim instancja klasy będzie musiała zostać zwolniona, należy wywołać „deinitializer”, aby zwolnić miejsce w pamięci. Słowo kluczowe „deinit” służy do zwalniania przestrzeni pamięci zajmowanej przez zasoby systemowe. Deinicjalizacja jest dostępna tylko dla typów klas.
Deinicjalizacja w celu zwolnienia miejsca w pamięci
Swift 4 automatycznie zwalnia Twoje instancje, gdy nie są już potrzebne, aby zwolnić zasoby. Swift 4 obsługuje zarządzanie pamięcią instancji poprzez automatyczne liczenie referencji (ARC), zgodnie z opisem w sekcji Automatyczne liczenie referencji. Zazwyczaj nie ma potrzeby ręcznego czyszczenia, gdy Twoje instancje są zwalniane. Jednak podczas pracy z własnymi zasobami może być konieczne samodzielne wykonanie dodatkowych czynności porządkowych. Na przykład, jeśli utworzysz klasę niestandardową w celu otwarcia pliku i zapisania w nim danych, może być konieczne zamknięcie pliku przed zwolnieniem instancji klasy.
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print = nil
print(counter)
Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -
1
0
Gdy instrukcja print = nil zostanie pominięta, wartości licznika pozostają takie same, ponieważ nie jest on deinicjalizowany.
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print(counter)
Gdy uruchomimy powyższy program za pomocą placu zabaw, otrzymamy następujący wynik -
1
1