Подсчет ссылок
Суть
Подсчёт ссылок (retain count) — механизм, на котором стоит управление памятью в Objective-C и Swift. У каждого объекта в куче есть счётчик сильных владельцев:
- создание объекта (
alloc/init,Class()) — счётчик = 1; - новый сильный владелец (
retain, присваивание вstrong-переменную) — +1; - владелец отпускает объект (
release, переменная вышла из области видимости) — −1; autorelease— «−1 позже», когда дренируется autorelease pool;- счётчик стал 0 — вызывается
dealloc/deinit, память освобождается.
В MRC эти вызовы писали руками, под ARC их вставляет компилятор, но сами счётчики существуют и инкрементируются в рантайме (атомарно).
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep