Sobes.tech
Junior — Middle

Are structura sau clasa are o metodă de curățare a resurselor sau un destructor?

sobes.tech AI

Răspuns de la AI

În Swift, structurile (struct) nu au destructori, deoarece sunt tipuri de valoare și sunt gestionate automat. Clasele (class), în schimb, pot avea un destructor — metoda deinit, care este apelată înainte de eliberarea instanței din memorie. În destructor, de obicei, se eliberează resurse, se închid fișiere, se anulează abonamente etc.

Exemplu de clasă cu destructor:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Fișier deschis \(fileName)")
    }

    deinit {
        print("Fișier închis \(fileName)")
    }
}

var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // va apela deinit

Prin urmare, doar clasele au destructor deinit, structurile nu.