Having trouble with releases in core graphics

core-graphics, drawrect, ios, iphone, objective-c

Solution

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)

Problem

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?

Original source