Утечки памяти при применении маски изображения с помощью CGImageMaskCreate / imageWithCGImage - PullRequest
1 голос
/ 01 июля 2010

Этот код утечки, если кто-то может сказать мне, почему?

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

1 Ответ

4 голосов
/ 01 июля 2010

«замаскированный» не выпускается, как только вы создали изображение с ним, вам нужно освободить его

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