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, структурите — не.