Приложение XCode, с или без сборки мусора, - PullRequest
0 голосов
/ 03 декабря 2011

Может кто-нибудь сказать мне, правильное использование Включение сборки мусора, в основном я не могу понять следующее,

1 - я работаю над сторонним приложением, для которого включена сборка мусора, 2 - Просто для экспериментов я отключил сборщик мусора и скомпилировал его с "Unsupported" сборщиком мусора, 3 - я создаю приложение, но когда я пытаюсь запустить его, оно дает сбой и выдает

Program received signal:  “EXC_BAD_ACCESS”

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

также, использование сборки мусора приведет к переполнению дополнительной памяти?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2011

Может кто-нибудь сказать мне, правильное использование Включение сборки мусора, в основном я не могу понять следующее,

1 - я работаю над сторонним приложением, которое получило мусорсборник включен, 2 - просто для эксперимента я отключил сборщик мусора и скомпилировал его с сборщиком мусора «3», 3 - я создаю приложение, но когда я пытаюсь запустить его, оно дает сбой и выдает

Program received signal:  “EXC_BAD_ACCESS”

Ну, подожди.Вы пытаетесь включить или отключить его?Сначала вы говорите, что хотите знать о его включении, но затем в вашем списке шагов сказано, что он уже включен, и вы отключили его.

Код для сбора мусора и код с подсчетом ссылок различаются.Вы не можете взять код, который был написан для GC, скомпилировать его с подсчетом ссылок и ожидать, что он будет работать.Если он даже компилируется, то сбой действительно является наиболее вероятным результатом.(Код, идущий в другую сторону, не будет компилироваться.)

Вы можете попробовать конвертировать в ARC, который будет иметь меньше различий, чем старый ручной подсчет ссылок.Тем не менее, код GC, скомпилированный с помощью GC, по-прежнему отлично работает, по крайней мере, на данный момент;«ошибки», которые вы видите, когда запускаете код GC без GC, не являются ошибками, когда GC включен.

Так что, вероятно, лучше всего оставить GC включенным, по крайней мере, пока вы не будете лучше знакомы с обоимиэтот код и язык.

1 голос
/ 03 декабря 2011

Если проект уже находится в среде сборки мусора, то вам следует продолжать его использовать - если только вы действительно не хотите просмотреть весь код и управлять памятью.В конце концов, хотя бы какая выгода?Ускорение от GC может быть ускорено, но для большинства приложений они не будут замечены, и в зависимости от размера проекта для правильной работы может потребоваться очень много времени.Вы также значительно увеличите вероятность появления ошибок.

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

Есливы еще не предлагали прочитать Руководство по программированию сборки мусора от Apple .

...