"Potential leak of an object" 使用 Core Graphics 时

"Potential leak of an object" when using Core Graphics

我的应用正在使用以下代码绘制阴影:

-(void)drawShadow:(CGContextRef)context rect:(CGRect)rect{

    CGContextSaveGState(context);

    //Set color of current context
    [[UIColor blackColor] set];

    //Set shadow and color of shadow
    CGContextSetShadowWithColor(context, CGSizeMake(0, 2), 3, [[UIColor colorWithWhite:0 alpha:0.5] CGColor]);

    CGContextFillEllipseInRect(context, rect);

    CGContextClipToMask(context, rect, CGBitmapContextCreateImage(context));

    CGContextRestoreGState(context); // Warning shows in this line

}

当我 运行 产品 > 分析时,它用消息标记此块的最后一条指令:"Potential leak of an object"。当我删除该行时,它显示相同的消息,但在右括号中。

知道我做错了什么吗?

谢谢

我认为是 CGBitmapContextCreateImage 漏水了。

尝试将它分配给一个局部变量,然后在剪裁到遮罩后用它调用 CGImageRelease

Another iPhone - CGBitmapContextCreateImage Leak

chedabob的答案有效!这是最终代码:

-(void)drawShadow:(CGContextRef)context rect:(CGRect)rect{
    CGContextSaveGState(context);
    //Set color of current context
    [[UIColor blackColor] set];
    //Set shadow and color of shadow
    CGContextSetShadowWithColor(context, CGSizeMake(0, 2), 3, [[UIColor colorWithWhite:0 alpha:0.5] CGColor]);
    CGContextFillEllipseInRect(context, rect);

    CGImageRef bitmap = CGBitmapContextCreateImage(context);
    CGContextClipToMask(context, rect, bitmap);
    CGContextRestoreGState(context);

    CGImageRelease(bitmap);
}