Ответ
Retain-Release (RR) или Manual Reference Counting (MRC) — это ручная модель управления памятью в Objective-C, где разработчик явно контролирует время жизни объектов с помощью методов retain и release.
Принцип работы:
retain— увеличивает счётчик ссылок объекта на 1, указывая на новую заинтересованность в нём.release— уменьшает счётчик на 1.- Когда счётчик достигает 0, система немедленно освобождает память объекта.
Пример цикла владения:
// Создание объекта
NSObject *obj = [[NSObject alloc] init]; // retainCount = 1 (от alloc)
// Взятие владения другим кодом
[obj retain]; // retainCount = 2
// Отказ от владения
[obj release]; // retainCount = 1
[obj release]; // retainCount = 0 -> объект деаллоцируется
Почему это важно знать сегодня?
- Для легаси-кода: Понимание MRC необходимо для поддержки старых проектов.
- Для Core Foundation: Низкоуровневые C-библиотеки (Core Foundation, Core Graphics) используют аналогичную модель CFRetain/CFRelease.
- Для понимания ARC: ARC — это автоматизация тех же правил retain/release.