6

esecuzione il mio codice in Xcode Analizzare ho inciampato nel seguente bloccopotenziale perdita di un oggetto memorizzato in CGImageRef

- (UIImage *)imageWithFilter:(CIFilter *)filter 
{ 
    CIContext *ctx = [CIContext contextWithOptions:nil]; 
    CGImageRef imageRef = [ctx createCGImage:filter.outputImage fromRect:CGRectMake(0, 0, self.size.width, self.size.height)]; 
    return [UIImage imageWithCGImage:imageRef]; 
} 

Xcode si lamenta di una potenziale perdita di memoria:

enter image description here

Cosa sta succedendo? E come andrei a ripararlo?

risposta

9

Quanto segue sembra una soluzione, ma non è ancora sicuro se questo è il modo migliore per gestire questo riferimento conservato in eccesso?

- (UIImage *)imageWithFilter:(CIFilter *)filter 
{ 
    CIContext *ctx = [CIContext contextWithOptions:nil]; 
    CGImageRef imageRef = [ctx createCGImage:filter.outputImage fromRect:CGRectMake(0, 0, self.size.width, self.size.height)]; 
    UIImage *image = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef); 
    return image; 
} 
+0

Questo è il modo migliore. Posso voi: D – 3329