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