Junior — Middle
Struktura yoki sinf resurslarni tozalash yoki destruktor metodiga ega mi?
sobes.tech AI
AIdan javob
Swiftda, tuzilmalar (struct) destruktorlarga ega emas, chunki ular qiymat turlaridir va avtomatik boshqariladi. Sinflar (class) esa, deinit nomli destruktorga ega bo'lishi mumkin — bu, ob'ekt xotiradan chiqarilishidan oldin chaqiriladi. Destruktor odatda resurslarni bo'shatadi, fayllarni yopadi, obuna bo'lishlarni bekor qiladi va h.k.
Destruktor bilan sinf misoli:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Fayl ochildi \(fileName)")
}
deinit {
print("Fayl yopildi \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // deinit chaqiriladi
Shuning uchun, faqat sinflar deinit destruktoriga ega, tuzilmalar esa emas.