Вы говорите об автоматическом подсчете ссылок, упомянутом в других ответах.ARC является своего рода GC в том смысле, что он автоматизирует освобождение памяти, но имеет ряд отличий от хорошего сборщика мусора.
Во-первых, это в основном технология компилятора.Компилятор знает о принципах подсчета ссылок Cocoa, поэтому он вставляет сохранения и освобождает их в соответствии с правилами.Это работает так же, как если бы вы написали retains и выпускаете сами - просто вставляете их для себя.Обычные сборщики мусора отслеживают память вашей программы во время ее работы.
Во-вторых, поскольку она аналогична сохранению и освобождению, она не может перехватить циклы сохранения (если объект A сохраняет объект B, а объект B сохраняет объектА, и ничто иное не ссылается ни на кого из них, они оба становятся бессмертными).Вы должны принять те же меры предосторожности, чтобы предотвратить их.
Он также использует ресурсы не так, как автоматический сборщик мусора.Сборщики мусора, используемые с Objective-C, должны сканировать память без ссылок и собирать ее - что дорого и может привести к «заиканию» в более медленных системах - но они должны делать это только изредка, и теоретически может даже точно настроитьих циклы сбора соответствуют тому, как программа фактически использует свою память.В общем, программа GC будет использовать больше памяти, чем программа без GC, и значительно замедлится, когда GC решит собирать данные.ARC, с другой стороны, перемещает «сканирование» во время компиляции и освобождает память, как только она становится доступной, но ему приходится постоянно обновлять счетчики ссылок на объекты, а не ждать, пока мусор будет накапливаться как сборщик.