AssetsLibrary を使用してデバイスの写真を読み込むフォト ギャラリー アプリケーションを開発しています。別の VC でランダムな画像を提示するとき、次のことに気付きました。フル解像度の画像が imageView にロードされるまでに約 1 秒または 2 秒かかります (ネイティブの photosApp よりもはるかに長くなります)。いくつかの画像を読み込んだ後、メモリ警告」が表示されます。表現を fullScreenImage に設定すると、警告は停止しますが、これは望ましくありません。ビューでスムーズなパフォーマンスと高品質の画像を得るには、何を変更する必要がありますか?
これがコードです。何が問題なのか教えていただければ幸いです。
これは、自分のイメージを画面に表示したい 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];
});
}
更新 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];
});
}