Какой метод жизненного цикла UIView вызывается перед удалением объекта из памяти?

«Какой метод жизненного цикла UIView вызывается перед удалением объекта из памяти?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Перед удалением объекта 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) его не имеют.