Память iPhone не освобождается после вызова nil

#iphone #memory-leaks #uiimageview #uiimage #didreceivememorywarning

#iPhone #утечки памяти #uiimageview #uiimage #didreceivememorywarning

Вопрос:

Я использую ScrollingSuite от Apple для отображения большого scrollview с несколькими большими изображениями.(768 x1024) Изображение imageview устанавливается

 controller.numberImage.image = [self.contentList objectAtIndex:page]; 
  

где numberImage — это UIImageView, а controller — это объект viewcontroller, который я добавляю в scrollview. Я устанавливаю изображение как нулевое, когда страница прокручивается вне поля зрения с помощью

 controller.numberImage.image = nil;
  

Но проблема в том, что моему приложению не хватает памяти, получая предупреждение о памяти при прокрутке изображений. Каждый раз, когда отображается новое изображение, я вижу увеличение памяти в инструменте instruments (тег памяти 70), который при поиске в Google выдает ImageIO. Пожалуйста, помогите мне с этим

Заранее спасибо

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

1. Как вы думаете, self.contentList хранит ссылку на изображение в памяти? Все ссылки должны быть освобождены, чтобы освободить объект.

Ответ №1:

Попробуйте удалить ImageView ( [controller.numberImage removeFromSuperview]; ), а затем добавить его обратно, прежде чем он появится в view ( [controller addSubview:[[UIImageView alloc] initWithImage:[self.contentList objectAtIndex:page]]]; ) возможно?

Ответ №2:

Для таких проблем могут быть различные решения…

  1. Я думаю, вы можете удалить изображение, подобное imageview [controller.numberImage removeFromSuperview] , и снова выделить изображение, когда вам это нужно UImageView .это может быть первым решением.

  2. За один раз вы можете загрузить 3 изображения, если я объясню, затем загрузите текущее изображение, предыдущее изображение и следующее изображение. это означает, что если вы хотите увидеть изображение 2, загружайте одновременно три изображения: изображение 1, изображение 2 и изображение 3. когда вы перейдете к следующему изображению, загрузите изображение2, изображение 3 и изображение 4 и освободить изображение 1 … и так далее…наоборот, для загрузки изображения предыдущая загрузка изображения.

  3. худшее решение — попытаться уменьшить разрешение изображения без изменения размера изображения.