Как работает ARC и когда возникают retain cycle?
Суть
ARC (Automatic Reference Counting) — компилятор вставляет retain/release в местах, где появляются и исчезают сильные ссылки на объект класса. Счётчик хранится в заголовке объекта; когда он падает до нуля, вызывается deinit и память освобождается — детерминированно, без сборщика мусора. ARC касается только классов (и замыканий, у которых контекст — тоже объект в куче); структуры и enum просто копируются.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep