Junior — Middle
Czy struktura lub klasa posiada metodę czyszczenia zasobów lub destruktor?
sobes.tech AI
Odpowiedź od AI
W Swift struktury (struct) nie mają destruktorów, ponieważ są to typy wartościowe i są zarządzane automatycznie. Klasy (class) mogą mieć natomiast destruktor — metodę deinit, która jest wywoływana przed zwolnieniem instancji z pamięci. W destruktorze zwykle zwalnia się zasoby, zamyka pliki, anuluje subskrypcje itp.
Przykład klasy z destruktorem:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Otwarty plik \(fileName)")
}
deinit {
print("Zamknięty plik \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // wywoła deinit
Zatem, tylko klasy mają destruktor deinit, struktury nie.