【问题标题】:Memory leaks when apply an image mask with CGImageMaskCreate/imageWithCGImage使用 CGImageMaskCreate/imageWithCGImage 应用图像蒙版时内存泄漏
【发布时间】:2010-07-01 12:20:22
【问题描述】:

这段代码泄露了,如果有人能告诉我为什么?

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

【问题讨论】:

    标签: iphone memory-leaks uiimage core-graphics


    【解决方案1】:

    “masked”没有发布,一旦你用它创建了图像,你需要发布它

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

    【讨论】:

    • Sébastien Gruhier:如果 Alexander Voloshyn 的答案是正确的,那么您应该通过单击复选标记来接受它。这会奖励他发布正确答案,并向该问题的未来读者表明答案的正确性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2014-07-02
    • 2016-08-10
    • 2010-10-12
    • 1970-01-01
    • 2021-06-26
    相关资源
    最近更新 更多