Junior — Middle
Kas struktuuril või klassil on ressursi puhastamise meetod või destruktor?
sobes.tech AI
Vastus AI-lt
Swiftis ei ole struktuuridel (struct) destruktorit, kuna need on väärtusetüübid ja neid hallatakse automaatselt. Klasidel (class) võib olla destruktor — meetod deinit, mis kutsutakse enne objekti mälust vabastamist. Destruktoris vabastatakse tavaliselt ressursid, suletakse failid, tühistatakse tellimused jms.
Näide klassist koos destruktoriga:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Fail avatud \(fileName)")
}
deinit {
print("Fail suletud \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // kutsub deinit
Seetõttu on ainult klassidel deinit destruktor, struktuuridel — mitte.