> Что такое 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 кодом.
> Похожие задачи по mobile
Какие есть приоритеты QoS в GCD и зачем они нужны
В чем минусы Auto Layout в iOS
Что такое concurrent queue в GCD?
Как оцениваете свой уровень разработчика
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью