Вопрос проверяет понимание автоматического и ручного управления памятью в Swift/Objective-C.
ARC (Automatic Reference Counting) автоматически подсчитывает ссылки и освобождает память. MRC (Manual Reference Counting) требует ручного вызова retain/release. В Swift используется только ARC.
1. Принцип работы ARC:
Подсчитывает сильные ссылки на объекты.
Когда счетчик достигает нуля, объект удаляется.
Работает во время компиляции (вставляет вызовы retain/release автоматически).
2. Отличия от MRC:
Автоматическое управление
Выше безопасность
Использование современного Objective-C
3. Пример ARC:
class Person {
deinit { print("Объект удален") }
}
var person: Person? = Person() // Счетчик = 1
person = nil // Счетчик = 0 → deinitВывод:
ARC удобнее и безопаснее, но требует понимания циклов удержания.