Sobes.tech
Junior — Middle

Структура же класс ресурстарды тазалоо үчүн метод же деструктор барбы?

sobes.tech AI

AIден жооп

Swiftте структуралар (struct) деструкторлорго ээ эмес, анткени алар маанилүү түрлөр жана автоматтык түрдө башкарылат. Класстар (class) болсо, deinit деп аталган деструкторго ээ болушу мүмкүн — ал жадыдан чыгарылгандан кийин чакырылат. Деструктордо адатта ресурстар бошотулат, файлдар жабылат, жазылуулар жокко чыгарыла тургандай кылып жасалат.

Мисал катары, класстын деструктору:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Файл ачылды \(fileName)")
    }

    deinit {
        print("Файл жабылды \(fileName)")
    }
}

var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // deinit чакырылат

Ошондуктан, гана класстар deinit деструкторуна ээ, структуралар — жок.