Junior — Middle
Struktura və ya sinif resursların təmizlənməsi metodu və ya destruktoru varmı?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də strukturlar (struct) destruktorlara malik deyil, çünki onlar dəyər tipləridir və avtomatik idarə olunur. Siniflər (class) isə, deinit adlı destruktoru ola bilər — bu, yaddaşdan azad edilənə qədər çağırılır. Destruktor adətən resursları azad edir, faylları bağlayır, abunəlikləri ləğv edir və s.
Destruktoru olan sinif nümunəsi:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Fayl açıldı \(fileName)")
}
deinit {
print("Fayl bağlandı \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // deinit çağırılır
Buna görə, yalnız siniflər deinit destruktoruna malikdir, strukturlar isə yox.