Junior — Middle
Má štruktúra alebo trieda metódu na vyčistenie zdrojov alebo deštruktor?
sobes.tech AI
Odpoveď od AI
V Swiftu nemajú štruktúry (struct) destruktory, pretože sú to hodnotové typy a automaticky sa spravujú. Triedy (class) však môžu mať destruktor — metódu deinit, ktorá sa volá pred uvoľnením inštancie z pamäti. V destruktore sa zvyčajne uvoľňujú zdroje, zatvárajú sa súbory, rušia sa odberné odbery atď.
Príklad triedy s destruktorom:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Súbor otvorený \(fileName)")
}
deinit {
print("Súbor zatvorený \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // zavolá deinit
Preto majú len triedy destruktor deinit, štruktúry nie.