我的应用使用以下代码绘制阴影:
-(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
}
当我运行Product>分析,它标记了该块的最后一条指令,其中包含以下消息:“对象的潜在泄漏”。当我删除该行时,它会在结束括号中显示相同的消息。
知道我做错了什么?
由于
答案 0 :(得分:2)
我认为CGBitmapContextCreateImage
正在泄漏。
尝试将其分配给局部变量,然后在剪切为蒙版时调用CGImageRelease
。
答案 1 :(得分:0)
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);
}