ОК, вот что я получил, попробовав много вариантов.В приведенном выше коде, в вопросе, я выделяю изображение, а затем помещаю изображение с счетом сохранения +1 в массив изображений, который, в свою очередь, также сохраняет изображение, что приводит к счету сохранения +2.В идеале мне нужно было выпустить объект изображения после добавления его в массив.Но я не знаю, что является очевидной утечкой памяти.Но странный статический анализатор не может уловить эту утечку.Теперь вот подвох.Код находится в цикле for.Если я помещу это вне петли, анализатор обнаружит это.Так что я думаю, что это связано с оптимизацией компиляции, которая не замечает опасности внутри цикла.
И вот еще одна проблема.Хотя анализатор может обнаружить утечку, если я проверю ее на приборах, утечка все равно не будет обнаружена.Также странно, не правда ли?Хорошо, вот почему.Это потому, что инструменты не показывают утечки, если есть какая-либо ссылка на объект.Итак, я даю вам два случая для сравнения:
images=[[NSMutableArray alloc] init];
UIImage *image=[[UIImage alloc] initWithContentsOfFile:[[NSBundle
mainBundle]pathForResource:@"Icon" ofType:@"png"]];
[images addObject: image];
Таким образом, статический анализатор обнаружит утечку памяти (обратите внимание, что код не находится внутри цикла).Но инструментов не будет.Но если я добавлю еще одну строку кода:
images=[[NSMutableArray alloc] init];
UIImage *image=[[UIImage alloc] initWithContentsOfFile:[[NSBundle
mainBundle]pathForResource:@"Icon" ofType:@"png"]];
[images addObject: image];
[images release];
, тогда не будет объекта, владеющего объектом изображения, поэтому он будет плавать вокруг.Таким образом, инструменты также обнаружат утечку.
Я знаю, что описанный выше случай практически невозможен в реальных приложениях, но это пример для демонстрационных целей, чтобы вы не запутались.
PS Я действительно не пытался отключитьоптимизация компиляции (если она существует вне курса.).Но я видел видео, где статический анализатор также обнаруживает утечку памяти внутри цикла.Иди ищи его, если тебе интересно.