Возможные утечки при использовании Analyze-tool. Нет утечек при запуске инструментов

#iphone #objective-c #memory-leaks

#iPhone #objective-c #утечки памяти

Вопрос:

Как описано в названии.

У нас есть приложение, которое автоматически показывает три возможные утечки при использовании Analyze-tool. Тем не менее, при запуске приборов для проверки на наличие утечек утечек нет, чего никогда не было при запуске приборов для проверки на наличие утечек.

Должны ли мы заботиться о ложноположительных результатах, которые обнаруживаются с помощью инструмента анализа?

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

     aViewcontroller *anotherViewController = [[aViewcontroller alloc] initWithNibName:@"aViewController" bundle:nil];

    anotherViewController.foo = bar;

    [self.navigationController pushViewController:anotherViewcontroller animated:YES];

    [anotherViewcontroller release];
  

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

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

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

2. На данный момент у нас очень маленькое приложение, поскольку мы можем переключаться только между тремя различными представлениями и вызывать nsxmlparser в основном, поэтому мы протестировали каждую комбинацию возможных результатов, и если мы прокомментируем выпуск, утечек не будет. Если у нас есть релиз, мы получаем реальные утечки.

Ответ №1:

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

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

Ответ №2:

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

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

1. Спасибо! Откуда берется anotherViewController? В любом случае: я не могу представить, почему Instruments покажет утечку, когда вы отпустите контроллер.

2. Добавлено еще немного кода. Мы также понятия не имеем, почему инструменты дают нам утечки.