2010-07-01 84 views
1

如果有人可以告诉我为什么会出现此代码泄漏?使用CGImageMaskCreate应用图像遮罩时发生内存泄漏/ imageWithCGImage

UIGraphicsBeginImageContext(drawingImage.frame.size); 

    [drawingImage.image drawInRect:CGRectMake(0, 0, drawingImage.frame.size.width, drawingImage.frame.size.height)]; 
    // Draw some vectorial data 
    // ... 
    // Apply an image mask 
    CGImageRef maskRef = mask.CGImage; 
    CGImageRef cgmask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
              CGImageGetHeight(maskRef), 
              CGImageGetBitsPerComponent(maskRef), 
              CGImageGetBitsPerPixel(maskRef), 
              CGImageGetBytesPerRow(maskRef), 
              CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask([UIGraphicsGetImageFromCurrentImageContext() CGImage], cgmask); 
    CGImageRelease(cgmask); 

    drawingImage.image = [UIImage imageWithCGImage:masked]; 

    UIGraphicsEndImageContext(); 

回答

4

“蒙面”不会被释放,一旦你用它创建的映像,你需要释放它

drawingImage.image = [UIImage imageWithCGImage:masked]; 
CGImageRelease(masked) 
+0

正确!非常感谢 – 2010-07-01 13:28:59

+1

SébastienGruhier:如果Alexander Voloshyn的回答是正确的,那么您应该通过点击复选标记来接受它。这会奖励他发布正确的答案,并指出答案对未来读者的正确答案。 – 2010-07-01 16:25:41

相关问题