Я разрабатываю приложение для фотогалереи с помощью AssetsLibrary для загрузки фотографий моего устройства. Когда вы представляете случайное изображение в другом VC, я заметил следующее: для моего изображения полного изображения загружается изображение imageView (путь намного дольше, чем родной photosApp), и я также получаю из журнала «Received» память "после загрузки нескольких изображений. Если я установлю свое представление на fullScreenImage, предупреждения перестанут, но я не хочу этого. Что я должен изменить для обеспечения гладкой производительности и высококачественных изображений на экране?Загрузка изображения с предупреждением о получении памяти GCD
Вот код, надеюсь, что вы можете сказать мне, в чем проблема:
Это VC, где я хочу представить мое изображение на экране
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"%@",assetsController);
detailImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:detailImageView];
detailImageView.image = smallImage; //small image is my asset thumbnail and is passed as an argument in my init function
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
ALAsset *asset = [assetsController.albumPics objectAtIndex:assetsController.index];
ALAssetRepresentation *representation = [asset defaultRepresentation];
bigImage = [[UIImage imageWithCGImage:[representation fullResolutionImage]]retain];
dispatch_async(dispatch_get_main_queue(), ^{
detailImageView.image = bigImage;
});
[pool release];
});
}
UPDATE 1
{
UIImageView *detailImageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:detailImageView];
detailImageView.image = smallImage;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
ALAsset *asset = [assetsController.albumPics objectAtIndex:assetsController.index];
ALAssetRepresentation *representation = [asset defaultRepresentation];
UIImage *bigImage = [UIImage imageWithCGImage:[representation fullResolutionImage]];
dispatch_async(dispatch_get_main_queue(), ^{
detailImageView.image = bigImage;
});
[pool release];
});
}
пытаются выпускать [bigImage релиз]; после detailImageView.image = bigImage; – BhushanVU
@bhuXan пробовал это уже и все еще получал предупреждения после нескольких загрузок изображений ... – QuiBongJin
с использованием jpeg-изображений или преобразования png в jpeg должен делать .... – BhushanVU