Sobes.tech
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.