2009-06-28 2 views
2

Я проверяю утечки в Инструментах, и я проверял каждую секунду, но никаких утечек не возникает.В Инструментах нет утечек, хотя я уверен, что они существуют

Я уверен, что в моем приложении должно быть что-то, что может помешать им появиться? Есть ли хороший способ создать утечку, чтобы я мог проверить, есть ли утечки в Инструментах?

Спасибо!

+0

«... Я уверен, что в моем приложении должно быть что-то ...» - какие доказательства вы должны поддержать этому утверждению? Вы не верите своим измерительным устройствам, или вам не хватает уверенности в ваших измерительных навыках? – duffymo

+1

Эй! На всякий случай, если вы новичок в инструменте для инструментов «Инструменты», вот подсказка, чтобы максимально использовать ее: в нижней строке щелкните значок, который показывает три элемента с небольшим отступом. Он представляет собой хороший список утечек. Затем щелкните последний значок в этом наборе (прямоугольник полузаполнен), чтобы отобразить «Расширенная деталь». Вы можете выбрать отдельную утечку, и она даст вам полную трассировку стека, и вы сможете перейти в код. Довольно пятно! Извините, если вы уже знали, но я был так впечатлен, когда наконец нашел ... –

+1

«... или вам не хватает уверенности в ваших измерительных навыках?» В первый раз, когда я использовал инструмент утечек, я усомнился как в моем понимании программирования в Objective-C, так и в моих измерительных навыках. :-) – Nosredna

ответ

1

Вы только обнаружите утечки с помощью инструмента, если объект выделен, но больше не ссылаются. Другой тип «утечки» - это ссылка на то, чего вы не намеревались. Обычно это происходит с коллекцией, подобной хеш-таблице или словарю, где пары ключ/значение остаются в коллекции, о которой забыл программист.

3

Создание утечки легко:

id someObject = [[NSObject alloc] init]; 
someObject = nil; 

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

+1

Проблема в том, что если вы не делаете «someObject = nil;» которую вы вряд ли будете делать, когда вы не намеренно пытаетесь создать утечки, тогда инструменты часто их не находят. –

1

Я уверен, что, поскольку clemahieu постулируется, то, что вы действительно видите, являются чрезмерно сохраненными объектами - вы думаете, что освободили их, но они все еще сохраняются.

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

Вы также можете использовать инструмент отслеживания памяти (не просачиваться), чтобы узнать, какая память все еще существует - просто выберите «созданный и все еще живой» вариант, чтобы проверить, какие объекты все еще существуют.

Смежные вопросы