В последней версии iOS Apple реализовала автоматический подсчет ссылок для Objective-C, но я не понимаю, как это работает.
Работает ли автоматический подсчет ссылок как сборщик мусора?
Ответы (2)
Автоматический подсчет ссылок вставляет сообщения retain
и release
в ваш код во время компиляции, следуя обычным соглашениям. Таким образом, это точно так же, как если бы вы сами управляли памятью вручную, за исключением того, что компилятор достаточно умен, чтобы написать этот бит для вас, и вероятность ошибки гораздо меньше.
Так что это не сборка мусора, это больше похоже на (очень простую) форму статического анализа. И вы по-прежнему получаете чрезвычайно детерминированное управление памятью и небольшое общее изменение затрат времени выполнения, как следует из предостережений, поднятых Catfish_Man ниже.
IDisposible
для работы с внешними ресурсами; В Java есть соглашение, основанное на явном закрытии внешних ресурсов. Объект dealloc
d уже был уничтожен и просто оставил след в памяти. Таким образом, первое — это реальная разница в семантике объекта, а второе — всего лишь плод реализации.
- person Tommy; 26.01.2014
Автоматический подсчет ссылок реализует автоматическое управление памятью для объектов и блоков Objective-C, освобождая программиста от необходимости явно вставлять сохранения и освобождения. Он не предоставляет сборщик циклов; вместо этого пользователи должны явно управлять временем существования.
Прочтите эту спецификацию — Автоматический подсчет ссылок