В моем приложении у меня есть несколько UIViewControllers для загрузки нескольких изображений на каждом из них. Глядя на используемую память, я понял, что память никогда не опускается, поскольку я представляю viewcontrollers и уменьшаю их, память всегда поднимается. Я начал искать о и выяснить, что проблема заключается в способе я загружать изображения, метод я использовал был imageNamed:Используемая память никогда не спускается с помощью UIImage: imageWithContentsOfFile
UIImage *oneImage = [UIImage imageNamed:imageName];
Так я изменил метод:
UIImage *oneImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];
Но кадры памяти так же ...
Я использую ARC и прежде, чем уволить из uivicontroller я называю:
oneImage = nil;
И проблема сохраняется, любая идея о том, как ее решить?
Вы уверены, что у чего-то еще нет ссылки на изображение? Возможно, 'UIImageView'? Используйте инструменты и посмотрите, что держит ссылку на изображение. – rmaddy
У меня есть uiimageview per uiimage, как я должен отключить uiimageview, просто с нуля? –
Нет. Все это должно быть очищено, если контроллер просмотра отклонен. Скорее всего, у вас есть цикл сохранения с контроллером представления, поэтому, когда вы отклоняете контроллер вида, он не освобождается, что означает, что ни один из его представлений и других ресурсов также не освобождается. Используйте инструменты и проверьте, продолжает ли контроллер просмотра после его увольнения. Если да, посмотрите, что держит ссылку на него. Попробуйте выполнить анализ в Xcode. Общей проблемой является использование 'self' в блоке. – rmaddy