Сборка мусора в Objective-C - PullRequest
       54

Сборка мусора в Objective-C

0 голосов
/ 02 июля 2011

Будучи программистом на Python уже четыре года (хотя это не так много значит) и переходя к Objective-C, единственное понятие, которое странно и «чуждо» для меня, - это управление памятью.К счастью, существует сборщик мусора, и я собираюсь разрабатывать приложения только для Mac OS 10.6+, поэтому до сих пор во всех своих проектах я всегда обращал внимание на сборку мусора.Но вот моя проблема: когда я использую Instruments с инструментом Alloc и Leaks, я вижу поппин с пропущенными байтами на графике.???Очень странно.Что действительно делает сборщик мусора, когда это необходимо.Я вижу, что вы можете полностью забыть о сохранении, освобождении и т. Д. Но так ли это?Пожалуйста, приведите примеры, где GC поможет, а где нет (если таковые имеются), чтобы я мог понять, что я делаю неправильно.

Редактировать

Возможно, мне следовало быть более яснымПроблема, которую я хочу решить, заключается в том, что даже после того, как GC настроен как требуется, Instruments все равно обнаруживает утечки.Я также спросил, что делает GC, чтобы убедиться, что он делает то, что я думаю, и проблема не в моем коде или в GC, а в другом месте.Это «в другом месте» - вот что я хочу выяснить.

Ответы [ 2 ]

0 голосов
/ 02 июля 2011

Простой ответ на ваш вопрос: когда у вас есть переменные или объекты, которые выделены для памяти, GC убирает за вас беспорядок. В то время как; в приложениях для iPhone и iPad вы должны очистить его самостоятельно, потому что GC не существует.

Пример:

NSArray* arr = [[NSArray alloc] init]; // Allocated to memory
[arr release]; // released from memory
0 голосов
/ 02 июля 2011

Если у вас есть время дождаться выпуска следующей версии Xcode (вместе с Lion), вы можете перейти непосредственно к ARC (Автоматический подсчет ссылок) .

ARC - в промежуточном режиме - заменит GC в OS X и iOS.

Если вы являетесь зарегистрированным разработчиком Apple, вы можете посмотреть презентации ARC в видеороликах WWDC2011.

...