6

meinen Code unter Xcode Laufe analysiert ich in den folgenden Block gestolpertPotential Leck eines Objekts in CGImageRef gespeichert

- (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 klagt über einen möglichen Speicherverlust:

enter image description here

Was es geht voran? Und wie würde ich es beheben?

Antwort

9

Das Folgende sieht wie ein Fix aus, ist aber immer noch nicht sicher, ob dies der beste Weg ist, diese überbehaftete Referenz zu verarbeiten?

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

Dies ist der beste Weg. Ich kann Sie: D – 3329