"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);
}
我的应用正在使用以下代码绘制阴影:
-(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);
}