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 aCFRetain(context)or aCGContextRetain(context), or if you created the context yourself. In your example, you are callingUIGraphicsBeginImageContextWithOptions(), which is handling the creation of the context for you, thus, callingCGContextRelease()yourself is over-releasing it.You do need to balance the
CGColorSpaceCreateDeviceRGB()with either a:or a :