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.