Очевидные утечки: png_malloc

У меня есть приложение с различными анимациями и изображениями. Приложение работает отлично в течение примерно 30 минут, но затем сбой. Я просмотрел инструменты, и я замечаю, что существует целая куча распределений png_malloc размером png_malloc каждый раз, когда я отмечаю кучу (составляющую около 300 КБ каждые пару минут).

Я заметил в своих утечках, что каждый раз, когда анимация или png используется в первый раз, кажется, что есть «утечка» данных (хотя я немного скептически отношусь к тому, является ли это настоящей утечкой или нет).

Все эти изображения были объявлены с использованием

 frameName = [[NSString alloc] initWithFormat:@"image.png"]; UIImage * u = [UIImage cachelessImageNamed:frameName]; 

поэтому я не верю, что возникла проблема с кэшированием изображений.

У кого-то еще была такая же проблема с этим распределением png_malloc ?

Снимок экрана инструментов

* Примечания: Я использую дугу, и анимации становятся nil в функции освобождения; однако они не вызываются до выхода приложения. Это создает проблему при каждом запуске анимации, если она была создана только один раз?

EDIT Еще один код:

 -(void) createSymbolAnimations { if (symbolAnimations == nil) { symbolAnimations = [[NSMutableArray alloc]init]; } NSString * frameName; if (thisAnimation == nil) { thisAnimation = [[NSMutableArray alloc] init]; } for (int x= 0; x< 40; x++) { frameName = [[NSString alloc] initWithFormat:@"image%d%s",x,".png"]; UIImage * u = [UIImage cachelessImageNamed:frameName]; [thisAnimation addObject:u]; } [symbolAnimations addObject:thisAnimation]; } 

Является созданием анимации. Представьте, что у меня есть несколько из них, а затем я изменяю набор анимаций и начинаю анимацию прикосновением к этому фрагменту:

 UIImageView * aView = [frameArray objectAtIndex:x]; aView.image = [[symbolAnimations objectAtIndex:x]objectAtIndex:0]; [aView startAnimating]; 

Где x – набор изображений, которые я хочу оживить, а 0 – первый кадр анимации.

Таким образом, изображение изменяется несколько раз, и я начинаю волноваться, что каждый раз, когда изображения анимации меняются, ОЗУ не очищается, а вместо этого переписывается / перезаписывается.

EDIT Image grabber

 +(UIImage *) cachelessImageNamed: (NSString *) name { return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:name ofType:nil]]; } 

На всякий случай кто-то наткнется на это позже, я нашел проблему.

Png, используемые в этом проекте для анимаций, были созданы в Windows (не знаю, насколько это уместно), и кажется, что формат файла немного отличается от того, что ожидает XCode. Это запрещает освобождение любого png. Если вы конвертируете формат в png для Mac, он работает нормально. Я сделал это через

  mogrify -type truecolormatte -format png *.png 

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

  • Ресурсы изображений для iOS
  • Изменена ли совместимость с iOS 7 PNG?
  • Как показывать прогрессивный JPEG в UIImageView во время его загрузки?
  • Как сохранить представление UIImage и текст внутри него на диск
  • Как написать персонализированные метаданные для изображений PNG в iOS
  • Сжатие PNG для использования с CIFilter
  • Swift PNG Изображение сохраняется с неправильной ориентацией
  • Почему формат png изменяется, когда на устройстве iPhone или iPad
  • сохранить UIView как файл png с прозрачным фоном
  • Xcode раздувает размер PNG и игнорирует сжатие PNG = флаг NO?
  • Можете ли вы создать файл изображения png с AVFoundation?
  • Давайте будем гением компьютера.