Назад к вопросам
Junior — Middle
67
Обладает ли структура или класс методом очистки ресурсов или деструктором?
Компании, где спрашивали
AppMaster
Uzum
Ответ от нейросети
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, структуры — нет.