Ответ
deinit — это деинициализатор, специальный метод класса в Swift, который автоматически вызывается непосредственно перед освобождением памяти, занимаемой экземпляром. Он используется для выполнения финальной очистки ресурсов.
Основные характеристики:
- Применяется только к классам (не к структурам или перечислениям).
- Не принимает параметров и не может быть вызван вручную.
- Вызывается автоматически, когда счетчик сильных ссылок на объект становится равным нулю.
- Не гарантируется вызов при retain cycle (цикле сильных ссылок).
Пример использования для освобождения ресурсов:
class FileHandler {
let filePath: String
init(path: String) {
filePath = path
print("Файл \(filePath) открыт.")
}
deinit {
// Закрытие файла, отмена сетевых запросов, удаление наблюдателей
print("Файл \(filePath) закрыт, ресурсы освобождены.")
}
}
// Создание и освобождение
var handler: FileHandler? = FileHandler(path: "document.txt")
// Вывод: Файл document.txt открыт.
handler = nil // Счетчик ссылок становится 0
// Вывод: Файл document.txt закрыт, ресурсы освобождены.