Подтвердить что ты не робот

Есть ли у iOS 5 сбор мусора?

Мне больше не нужно беспокоиться об управлении памятью iOS 5 дальше? Кроме того, все программы, написанные для iOS 4 и более ранних версий, должны быть перезаписаны, чтобы позволить iOS управлять памятью для вас?

4b9b3361

Ответ 1

Вы, кажется, говорите об автоматическом подсчете ссылок, упомянутом в других ответах. ARC - это своего рода GC, в котором он автоматизирует освобождение памяти, но имеет ряд отличий от хорошего сборщика мусора.

Во-первых, это в основном технология компилятора. Компилятор знает о Cocoa рекомендациях по подсчету ссылок, поэтому он вставляет сохраненные и выпуски, где они должны соответствовать правилам. Он работает так же, как если бы вы написали записи и освобождали себя - они просто вставляют их для вас. Нормальные сборщики мусора отслеживают вашу память программы во время ее работы.

Во-вторых, поскольку он похож на сохранение и освобождение, он не может улавливать циклы удержания (если объект А сохраняет объект B, а объект B сохраняет объект A, и ничто другое не ссылается ни на одно из них, они оба становятся бессмертными). Вам необходимо принять те же меры предосторожности, чтобы предотвратить их.

Он также использует ресурсы, отличные от автоматического сборщика мусора. Сборщики мусора, используемые с Objective-C, должны сканировать для неопубликованной памяти и собирать ее - что дорого, и могут привести к "заиканию" на более медленных системах, - но они должны делать это только иногда, и теоретически может даже тонко настраиваться их циклы сбора, чтобы соответствовать тому, как программа фактически использует свою память. В общем, программа GC будет использовать больше памяти, чем программа, отличная от GC, и значительно снизится, когда GC решит собирать. ARC, с другой стороны, перемещает "сканирование" на время компиляции и освобождает память, как только она доступна, но она должна постоянно обновлять подсчет ссылок на объекты, а не ждать, когда мусор будет создан как сборщик.

Ответ 2

На Apple публичной странице iOS 5 говорится:

Автоматический подсчет ссылок

Автоматический подсчет ссылок (ARC) для Objective-C делает управление памятью заданием компилятора. Включив ARC с новым компилятором Apple LLVM, вам больше не понадобится вводить сохранение или выпуск, что значительно упрощает процесс разработки, одновременно уменьшая количество сбоев и утечек памяти. Компилятор имеет полное представление о ваших объектах и ​​выпускает каждый объект в тот момент, когда он больше не используется, поэтому приложения работают как можно быстрее, с предсказуемой и плавной производительностью.

Это функция компилятора; не функция ОС, поэтому я не понимаю, почему она не будет работать со старыми версиями.

Ответ 3

Автоматический подсчет ссылок реализует автоматическое управление памятью для объектов и блоков Objective-Cосвобождение программиста от необходимости явно вставлять релизов.

Вы будете беспокоиться о меньше об управлении памятью. Существует общедоступная информация по этому вопросу:

Если спецификация слишком резкая для чтения, одним словом, вам нужно будет отредактировать код сохранения/выпуска для использования ARC, но старые программы остаются совместимыми. То, что вы не должны делать, это смешивать оба.