Objective C 2.0 Сборщик мусора VS Автоматический счетчик ссылок в IOS 5 SDK - PullRequest
7 голосов
/ 26 октября 2011

Просто интересно, если кто-нибудь знает, чем отличается Objective C 2.0 Сборщик мусора и новый автоматический счетчик ссылок в IOS 5 SDK?

IOS 5 SDK также использует Objective C 2.0?

примечание: что я имею в виду, цель C 2.0 - я видел по этой ссылке http://theocacao.com/document.page/510

Спасибо

Ответы [ 2 ]

13 голосов
/ 26 октября 2011

Просто интересно, кто-нибудь знает, в чем разница между Objective C 2.0 Сборщик мусора и новым автоматическим счетчиком ссылок в IOS 5 SDK?

ARC не является сборщиком мусора.Лучше думать об этом как о вызовах подсчета ссылок (retain / release / autorelease), которые добавляются компилятором.Он также использует некоторые приемы времени выполнения.

Если вы совершенно не знакомы с ObjC в системах Apple: все типы Apple Objective-C используют подсчет ссылок, но сейчас существует несколько вариантов.До ARC и до GC мы использовали только ручной подсчет ссылок (MRC).С MRC вы бы явно сохранили и освободили ваши объекты.MRC было трудно для некоторых людей, особенно для тех, кто потратил немного времени на управление своей памятью.Поэтому спрос на более простые системы со временем рос.Программы MRC также требуют, чтобы вы написали хороший объем кода управления памятью, который может стать утомительным.

См. Превосходный ответ Брэда здесь для получения дополнительной информации.

IOS 5 SDK также использует Objective C 2.0?

Да, , но Сборщик мусора ObjC не является и никогда не был опцией для iOS.

8 голосов
/ 26 октября 2011

Примечание: сборка мусора недоступна на iOS, но, согласно моим комментариям, ARC доступна на Mac OSX 10.6+.Однако различия все еще сопоставимы.

При автоматическом подсчете ссылок объекты по-прежнему освобождаются, как только выходят за пределы области.1008 *, объекты могут оставаться в памяти до тех пор, пока сборщик мусора не выполнит следующую очистку и не найдет объекты, на которые больше нет ссылок.

...