0

내가 디스패치 큐에 이미지를로드하는 데 사용 여기에 코드 블록이 : 나는 나쁜 얻을 결국 때까지버그로드 사진

dispatch_async(dispatch_get_global_queue(0, 0),^
{ 
    CGImageRef x = self.asset.defaultRepresentation.fullScreenImage; 

    dispatch_async(dispatch_get_main_queue(),^
    { 
     [[self imageView] setImage: [UIImage imageWithCGImage: x]]; 
    }); 
}); 

코드는 몇 번 작동하는 것 같다을 이 라인 [[self imageView] setImage: [UIImage imageWithCGImage: x]];에 액세스하십시오. 누구든지이 원인을 알 수 있습니까?

답변

1

사용

CGImageRef x = CGImageCreateCopy(self.asset.defaultRepresentation.fullScreenImage); 

CGImageRelease(x) 

당신이 설정 한 후 그

1

자신의 큐에있는 CGImageRef를 해제하기보다는 또 다른 하나의 비동기 대기열에서에 전달하십시오 :

dispatch_async(dispatch_get_global_queue(0, 0),^
{ 
    CGImageRef x = self.asset.defaultRepresentation.fullScreenImage; 
    UIImage *img = [UIImage imageWithCGImage: x]; 
    CGImageRelease(x); 

    dispatch_async(dispatch_get_main_queue(),^
    { 
     [[self imageView] setImage: img]; 
    }); 
}); 

간단한 해킹이 작동하지 않는다면, 이제는 계기를 작동시켜 실제로 누출되는 부분을 볼 시간입니다.