Junior — Middle
Ar struktūra ar klasė turi išvalymo metodą ar destruktorių?
sobes.tech AI
Atsakymas iš AI
Swift'e struktūros (struct) neturi destruktorių, nes jos yra reikšmių tipai ir yra automatiškai valdomos. Klasės (class) gali turėti destruktorių — metodą deinit, kuris kviečiamas prieš išlaisvinant objektą iš atminties. Destruktoriuje paprastai atlaisvinami ištekliai, uždaromi failai, atšaukiamos prenumeratos ir pan.
Pavyzdys su klase ir destruktoriu:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Atidarytas failas \(fileName)")
}
deinit {
print("Uždarytas failas \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // iškvies `deinit`
Todėl tik klasės turi destruktorių deinit, struktūros — ne.