Search code examples
iphoneioscocoa-touchcore-graphicsquartz-graphics

Correct GraphicsContext When Using UIGraphicsGetImageFromCurrentImageContext


I have the following method where I'm trying to do some drawing into an image:

- (UIImage*) renderImage
{
    UIGraphicsBeginImageContextWithOptions(self.size, NO, 0);
    CGContextRef context = UIGraphicsGetCurrentContext();
    //drawing code

    UIImage *image = [UIGraphicsGetImageFromCurrentImageContext() retain];
    UIGraphicsEndImageContext();  
    return [image autorelease];    
}

When I run this code I noticed that I'm getting hit much harder than I did when I was simply drawing this code in drawRect of a UIView. Am I drawing into the wrong graphics context here (ie CGContextRef context = UIGraphicsGetCurrentContext();)? Or is UIGraphicsGetImageFromCurrentImageContext just that much more expensive than drawing in drawRect?


Solution

  • The main difference is that the context that you create requires an offscreen rendering, it isn't the same context created in -drawRect. So you are adding an additional memory to the heap that stays until you will release the image.