I've just started with releasing in core graphics, so I might need a little help.
I have code which looks like this:
UIImage *buttonImage() {
UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGMutablePathRef outerPath;
CGMutablePathRef midPath;
CGMutablePathRef innerPath;
CGMutablePathRef highlightPath;
//Some button stuff
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGContextRelease(context);
return image;
}
That release line, I've put in. I'm getting an error with it though:
context_reclaim: invalid context
context_finalize: invalid context
Any thoughts as to where i should put the release in this instance?
You only need to do CGContextRelease(context)
if you have previously done a CFRetain(context)
or a CGContextRetain(context)
, or if you created the context yourself. In your example, you are calling UIGraphicsBeginImageContextWithOptions()
, which is handling the creation of the context for you, thus, calling CGContextRelease()
yourself is over-releasing it.
You do need to balance the CGColorSpaceCreateDeviceRGB()
with either a:
CGColorSpaceRelease(baseSpace)
or a :
if (baseSpace) CFRelease(baseSpace)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With