> Что такое retain и release в iOS? (iOS, Swift)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: VK

Стек: iOS, Swift

> Пример ответа

Retain и release - это механизмы ручного подсчёта ссылок (Manual Reference Counting, MRC) в Objective-C, которые использовались до появления ARC (Automatic Reference Counting). В iOS они управляют временем жизни объектов в куче.

  • retain - увеличивает счётчик ссылок объекта на 1. Это означает, что объект «зарезервирован» и не будет освобождён, пока счётчик не станет равным нулю.

  • release - уменьшает счётчик ссылок на 1. Когда счётчик достигает 0, объект немедленно освобождается (вызывается dealloc), и память возвращается системе.

Пример в MRC:

NSString *str = [[NSString alloc] initWithString:@"Hello"]; // счётчик = 1
[str retain]; // счётчик = 2
[str release]; // счётчик = 1
[str release]; // счётчик = 0 → объект удалён

В современном Swift и ARC эти вызовы генерируются компилятором автоматически, поэтому разработчику не нужно явно писать retain/release. Однако понимание этого механизма важно для работы с небезопасными ссылками (например, Unmanaged), отладки утечек памяти и взаимодействия с Objective-C кодом.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью