Ответ
Перед удалением объекта UIView из памяти вызывается его деинициализатор deinit.
Ключевые моменты:
- Вызывается автоматически системой управления памятью (ARC) непосредственно перед освобождением памяти, занятой экземпляром класса.
- Основное назначение — освобождение захваченных ресурсов: отписка от уведомлений (
NotificationCenter), остановка таймеров (Timer), аннулирование сетевых запросов. - Не вызывается, если на объект остаются сильные ссылки (retain cycle), что приводит к утечке памяти.
Пример использования:
class CustomView: UIView {
var timer: Timer?
deinit {
// 1. Остановка таймера
timer?.invalidate()
// 2. Отписка от уведомлений
NotificationCenter.default.removeObserver(self)
print("CustomView будет удален из памяти")
}
}
Важно: deinit доступен только для классов (reference types). Структуры (value types) его не имеют.