Sobes.tech
Junior — Middle

Da li struktura ili klasa ima metodu za čišćenje resursa ili destruktor?

sobes.tech АИ

Одговор од АИ

У Swift, strukture (struct) nemaju destruktore, jer su to tipovi vrednosti i automatski se upravljaju. Klase (class), s druge strane, mogu imati destruktor — metod deinit, koji se poziva pre oslobađanja instance iz memorije. U destruktoru se obično oslobađaju resursi, zatvaraju fajlovi, otkazuje pretplate itd.

Primer klase sa destruktorom:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Fajl otvoren \(fileName)")
    }

    deinit {
        print("Fajl zatvoren \(fileName)")
    }
}

var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // pozvaće deinit

Dakle, samo klase imaju destruktor deinit, strukture nemaju.