Sobes.tech
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.