Sobes.tech
Junior — Middle

Heeft de structuur of klasse een resource cleanup-methode of destructor?

sobes.tech AI

Antwoord van AI

In Swift hebben structs (struct) geen destructors, omdat het waarde-types zijn die automatisch worden beheerd. Klassen (class) kunnen echter een destructor hebben — de methode deinit, die wordt aangeroepen voordat het exemplaar uit het geheugen wordt vrijgegeven. In de destructor worden meestal bronnen vrijgegeven, bestanden gesloten, abonnementen geannuleerd, enz.

Voorbeeld van een klasse met destructor:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Bestand geopend \(fileName)")
    }

    deinit {
        print("Bestand gesloten \(fileName)")
    }
}

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

Dus, alleen klassen hebben een destructor deinit, structs niet.