#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:
Для таких проблем могут быть различные решения…
-
Я думаю, вы можете удалить изображение, подобное imageview
[controller.numberImage removeFromSuperview]
, и снова выделить изображение, когда вам это нужноUImageView
.это может быть первым решением. -
За один раз вы можете загрузить 3 изображения, если я объясню, затем загрузите текущее изображение, предыдущее изображение и следующее изображение. это означает, что если вы хотите увидеть изображение 2, загружайте одновременно три изображения: изображение 1, изображение 2 и изображение 3. когда вы перейдете к следующему изображению, загрузите изображение2, изображение 3 и изображение 4 и освободить изображение 1 … и так далее…наоборот, для загрузки изображения предыдущая загрузка изображения.
-
худшее решение — попытаться уменьшить разрешение изображения без изменения размера изображения.