2013-10-11 5 views
2

В моем приложении я показываю много изображений из URL, используя AFNetworking, чтобы загрузить их асинхронно в моем UICollectionView. Вероятно, слишком много, потому что через некоторое время приложение падает из-за давления памяти. Но с помощью инструментов в разделе «Все распределения кучи» я не вижу утечки памяти.iOS - Грязная память продолжает расти

Однако, грязная память VM продолжает расти. Я вижу много записей «CG Raster Data». Я уверен, что это связано с моими изображениями, но я не понимаю, что это.

Есть ли способ освободить эту память? Если это память, как я могу ее решить в ARC? (Я не вижу сохранить цикл)

Спасибо

+0

Вы сохраняете изображения в памяти? Показать код и журнал журналов завершения трассировки/прерывания. – Wain

+0

У меня такая же проблема; мое приложение получает изображения менеджера активов, использует их, и через некоторое время CG Raster продолжает расти до пуфа. Но я не держу ссылки и не вижу признаков «утечек» ... не знаю, кто висит на изображениях. Я мог бы облегчить его с умным кэшированием на моей стороне, но, похоже, это просто задержит проблему. –

+0

Ах, просто поговорить об этом помогло. Спасибо за прослушивание! Я делал некоторые манипуляции с CGBitmap. Каждому CGCreateXxx() требуется CGReleaseXxx(), а не как объекты ARC. http://stackoverflow.com/questions/13921779/cgimageref-cg-uiimage-imagenamed-path-cgimage-requires-a-cgimagerelease –

ответ

0

Немного поздно, но я испытал это раньше, когда UIImageJPEGRepresentation.

Ваш лучший шаг, чтобы обернуть в autorelease бассейн

@autoreleasepool {

// Code here... 

}

Это освободит все экземпляры внутри блока, которые имеют порядковый счет 0 Это хорошо для циклов, так как в противном случае ваш объем памяти будет расти, пока вы не достигнете конца контекста метода.

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