фон:iPhone Разработка - UIImageView выпуск памяти
Вдохновленный из образца кода ScrollViewSuite Apple, я создал класс контроллера вида, который показывает уменьшенные изображения и один выбранный снимок. Иерархия управления для «выбранных» картин что-то вроде этого:
--> UIView
--> UIScrollView
--> UIImageView
используется следующий код, чтобы поставить UIScrollView на взгляд:
imageScrollView = [[UIScrollView alloc] initWithFrame:frame];
[imageScrollView setBackgroundColor:[UIColor clearColor]];
[imageScrollView setDelegate:self];
[imageScrollView setBouncesZoom:YES];
[[self view] addSubview:imageScrollView];
... и следующий код используется для настроить и добавить UIImageView в UIScrollView:
// Custom method to return a UIImage from a URL string
UIImage *image = [UIImage newImageWithContentsOfURL:imageURL];
// first remove previous image view, if any
[[imageScrollView viewWithTag:MAIN_IMAGE_TAG] removeFromSuperview];
// set the new image view
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[imageView setDelegate:self];
[imageView setTag:MAIN_IMAGE_TAG];
[imageScrollView addSubview:imageView];
[imageScrollView setContentSize:[imageView frame].size];
// choose minimum scale so image width fits screen
float minScale = [imageScrollView frame].size.width/[imageView frame].size.width;
[imageScrollView setMinimumZoomScale:minScale];
[imageScrollView setZoomScale:minScale];
[imageScrollView setContentOffset:CGPointZero];
// clear memory
[imageView release];
imageView = nil;
[image release];
image = nil;
Вот метод категории Я использовал, чтобы получить UIImage с помощью URL-строки:
+ (UIImage *)newImageWithContentsOfURL:(NSString *)imageURL {
NSURL *url = [[NSURL alloc] initWithString:imageURL];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
UIImage *image = [[UIImage alloc] initWithData:data];
[data release];
[url release];
return image;
}
Проблема: (прибл.) Аффект загрузки JPEG-изображение размером 110 Кб является то, что реальная память приложения перескакивает с 12 МБ (прибл.) До 38 МБ (прибл.). Когда я впервые увидел это, я был озадачен. Как это возможно? Uh, и конечный результат: сбой приложений на iPhone 3G (иногда).
Обратите внимание, что показания памяти были взяты с помощью инструмента «Монитор памяти» в «Инструменты» - при тестировании приложения на устройстве (а не на симуляторе). Также обратите внимание, что приборы не обнаруживают утечек памяти, и Static Analyzer не указывает ни на что подозрительное.
Мне нужна помощь!
Он выходит из строя после того, как 1 х нагрузки 110Кб изображения в imageView? – Zinc
Да. 110 Кбайт изображения при загрузке в изображениеView делает реальную съемку с 12 МБ до 38 МБ. – Mustafa