Junior — Middle
Van-e a szerkezetnek vagy osztálynak erőforrás-tisztító módszere vagy destruktora?
sobes.tech MI
Válasz az MI-től
Swiftben a struktúráknak (struct) nincs destruktoruk, mivel értéktípusok és automatikusan kezeltek. A osztályok (class) viszont rendelkezhetnek deinit nevű destruktorral, amelyet az objektum memória felszabadítása előtt hívnak meg. A destruktorban általában erőforrásokat szabadítanak fel, fájlokat zárnak be, leiratkoznak stb.
Példa egy osztályra destruktorral:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Fájl megnyitva \(fileName)")
}
deinit {
print("Fájl bezárva \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // meghívja a deinit-et
Ezért csak osztályoknak van deinit destruktoruk, struktúráknak nincs.