Sobes.tech
Back to questions
Junior — Middle
68

Обладает ли структура или класс методом очистки ресурсов или деструктором?

Companies where asked
AppMaster
Uzum

Answer from AI

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