2

내 장치 사진을로드하기 위해 AssetsLibrary를 사용하여 사진 갤러리 애플리케이션을 개발 중입니다. 다른 VC에서 무작위 이미지를 표시 할 때 다음과 같은 사실을 알았습니다. 내 전체 이미지가 imageView에로드되는 데 약 1 ~ 2 초가 걸렸습니다 (원시 photosApp보다 훨씬 길다). 또한 "받은 이미지 메모리 경고 "를 표시합니다. 내 표현을 fullScreenImage로 설정하면 경고가 멈추지 만 나는 이것을 원하지 않습니다. 보기에서 부드러운 성능과 고품질 이미지를 위해 무엇을 변경해야합니까?GCD 수신 메모리 경고로 이미지 로딩

이 내가 화면

- (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]; 

     }); 
} 
에 내 이미지를 제시 할 VC입니다 : 여기

는 문제가 무엇을 말해 줄 수 있기를 바랍니다, 코드의

enter image description here

+1

[bigImage release] 출시 시도. after detailImageView.image = bigImage; – BhushanVU

+0

@bhuXan이 이미 이미지를로드 한 후에도 경고가 표시됩니다. – QuiBongJin

+0

jpeg 이미지를 사용하거나 JPEG로 변환하면 .... – BhushanVU

답변

0

bigImage이 인스턴스 변수입니까? 여기가 아닌 다른 장소에서 사용됩니까? 다른 곳에서 사용되지 않으면 로컬 변수 여야하며이를 유지하면 안됩니다. 보유한 인스턴스 변수 인 경우 새 값을 지정하기 전에 이전 값을 해제해야합니다.

동일한 설명이 적용됩니다. detailImageView

+0

사실 둘 다 인스턴스 변수 였지만 다른 곳에서는 사용되지 않았으므로 로컬 변수로 변환했습니다. 업데이트 – QuiBongJin

+0

을 계속보십시오. – QuiBongJin

+0

경고를 계속 받고, – newacct