Sobes.tech
Junior — Middle

La struttura o la classe dispone di un metodo di pulizia delle risorse o di un distruttore?

sobes.tech AI

Risposta dell'AI

In Swift, le strutture (struct) non hanno distruttori, poiché sono tipi di valore gestiti automaticamente. Le classi (class), invece, possono avere un distruttore — il metodo deinit, chiamato prima di liberare l'istanza dalla memoria. Nel distruttore di solito si liberano risorse, si chiudono file, si annullano sottoscrizioni, ecc.

Esempio di una classe con distruttore:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("File aperto \(fileName)")
    }

    deinit {
        print("File chiuso \(fileName)")
    }
}

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

Pertanto, solo le classi hanno un distruttore deinit, le strutture no.