Поиск утечки из профилировщика Xcode 4

#xcode

#xcode

Вопрос:

Мое приложение для iPad получает предупреждение об уровне памяти 1, поэтому я запустил профилировщик утечки памяти в Xcode 4. Конечно же, когда я перемещаю один конкретный ползунок, это вызывает утечку. Переместите его снова, еще одна утечка, и количество утекших байтов увеличится.

Мне интересно, предоставляет ли Xcode 4 простой способ узнать, какой конкретно объект подвергается утечке. Я просмотрел метод с помощью перемещения ползунка; каждый раз, когда я использую alloc / init, я затем отпускаю его. Было бы хорошо знать, где Xcode находит утечку, так как я не могу найти ее сам.

В документации Xcode 4 упоминается довольно много инструментов. Однако мне интересно, не была ли эта документация обновлена с Xcode 3, потому что эти инструменты отсутствуют в меню, упомянутых в документах.

действие ползунка заключается в:

 -(IBAction) sensitivity:(UISlider *)slider{

self.grid.sensitivity=slider.value;
[self.grid setNeedsDisplay];
}
  

само по себе это не говорит об утечке памяти. Однако метод «setNeedsDisplay», который является довольно длительным, не создает утечки при первом запуске, так зачем же ему создавать утечку при втором запуске? Все инициализации / alloc в этом коде освобождены (создано и освобождено только 3 объекта).

Комментарии:

1. В этом случае я бы сказал, что это довольно очевидно, что это что-то в вашем слайдере или чем управляет ваш слайдер, если вы свяжете этот код, мы могли бы помочь со спецификой, насколько это касается инструментов .. смотрите Другие ответы.

2. я добавил код к вопросу.

Ответ №1:

Я считаю полезным запускать сборку / Build и анализировать из меню. Он не улавливает все и выдает несколько ложных срабатываний, но это хорошее (и простое) начало для автоматического обнаружения утечек.

Комментарии:

1. в Xcode 4 есть просто опция «Анализировать» в меню продукта; это та, которую вы имеете в виду? Когда я запускаю его, ничего особенного не происходит. На самом деле это не запускает мое приложение на моем устройстве, и нигде в Xcode не появляется аналитика, указывающая на то, что оно что-то нашло или проанализировало.

2. @ansdrewjs: Не уверен, у меня есть только Xcode 3.2.5 на этом компьютере. В моем меню он находится в разделе Build /, и опция называется «Сборка и анализ» (shift shift-command-A). Для его запуска у вас должно быть подключено устройство.

3. где вы видите результаты Анализа? Я запускаю то, что кажется Анализом, и программа, похоже, ничего не делает.

4. Появится окно с количеством «результатов», обозначенных синим треугольником. Скриншоты по этой ссылке: clang-analyzer.llvm.org/xcode.html