Каков наилучший способ отслеживать управление памятью во время тестирования моего приложения для iPhone? - PullRequest
6 голосов
/ 06 января 2009

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

Я понимаю, что могу печатать или регистрировать счетчики через NSLog (@ "счетчик сохранения:% d", [myInstance retainCount]);

Но нет ли лучшего, менее ручного метода? Возможно визуальное представление ваших объектов и экземпляров?

ответил. Приветствия, Адам и Джейсон. : -)

Ответы [ 4 ]

6 голосов
/ 06 января 2009

Используйте инструменты утечки и выделения объектов через XCode.

Run > Start with Performance Tool > ...
3 голосов
/ 06 января 2009

В дополнение к другим ответам я настоятельно рекомендую использовать clang для статического анализа памяти вашего кода. Он не поймает каждую ошибку управления памятью, но он поймает довольно много. Если ваша главная проблема, похоже, связана с ошибками управления памятью, clang поможет найти эти ошибки. Звонок бесплатный, на http://clang.llvm.org/

2 голосов
/ 06 января 2009

Как полагает Адам, инструменты - очень полезный инструмент для подобных вещей. Он довольно прост в использовании, но поначалу может показаться немного сложным. Я предлагаю внимательно изучить Руководство пользователя по приборам . За ним довольно легко следить, и он полезен, пока вы некоторое время не используете инструменты. Однако даже не читая руководство, Instruments по-прежнему намного проще и интуитивнее, чем засорять ваш код вызовами NSLog () и пытаться проанализировать вывод самостоятельно;)

0 голосов
/ 27 февраля 2009

Я также считаю, что трюк NSZombie полезен для отслеживания случаев перерасхода объектов.

По сути, ссылка описывает «хитрость», так что освобожденные объекты заменяются объектами NSZombie, которые при повторном освобождении генерируют исключения.

Затем вы можете использовать Instruments для отслеживания того, где был выделен объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...