Приложение для iPhone загружает файлы изображений с сервера, сохраняет их в NSTeilitaryDirectory () и затем асинхронно загружает изображение в пользовательский интерфейс.Поток кода выглядит следующим образом:
- Показать представление с индикатором загрузки и запустить загрузчик изображений в фоновом режиме.
- После загрузки изображения оно записывается в файл.
- Таймер в представлении загрузки продолжает проверять наличие файла во временном каталоге и, когда он становится доступным, загружает изображение из файла и добавляет изображение в пользовательский интерфейс.
- Перед добавлением изображения,он масштабируется до необходимого размера.
Проблема в том, что я использую UIGraphicsGetImageFromCurrentImageContext для масштабирования изображения.Похоже, память, используемая контекстом изображения, не очищается.Память приложения продолжает увеличиваться по мере загрузки новых файлов.
Пример кода ниже:
Код для масштабирования изображения:
-(UIImage*)scaleToSize:(CGSize)size image:(UIImage *)imageref
{
UIGraphicsBeginImageContext(size);
[imageref drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
Загрузка изображения из временного каталога:
-(void)loadImageFromFile: (NSString *) path
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
UIImage * imm = [[[UIImage alloc] initWithContentsOfFile:path] autorelease];
[self performSelectorOnMainThread:@selector(insertImage:) withObject:imm waitUntilDone:YES];
[pool release];
}
Добавление изображения для просмотра (подмножество кода):
self.imageContainer = [[UIImageView alloc] initWithFrame:CGRectMake(0,80,320,250)];
[self addSubview:self.imageContainer];
self.imageContainer.image = [self scaleToSize:CGSizeMake(320.0f, 250.0f) image:imm];
[imageContainer release];
Чего мне здесь не хватает