La forma más eficiente de dibujar parte de una imagen en iOS

Dan anUIImage y unCGRect, cuál es la forma más eficiente (en memoria y tiempo) de dibujar la parte de la imagen correspondiente a laCGRect (sin escalar)?

Para referencia, así es como lo hago actualmente:

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGRect frameRect = CGRectMake(frameOrigin.x + rect.origin.x, frameOrigin.y + rect.origin.y, rect.size.width, rect.size.height);    
    CGImageRef imageRef = CGImageCreateWithImageInRect(image_.CGImage, frameRect);
    CGContextTranslateCTM(context, 0, rect.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextDrawImage(context, rect, imageRef);
    CGImageRelease(imageRef);
}

esafortunadamente, esto parece extremadamente lento con imágenes de tamaño mediano y una altasetNeedsDisplay frecuencia. Jugando conUIImageViewl marco de @ yclipToBounds produce mejores resultados (con menos flexibilidad).

Respuestas a la pregunta(5)

Su respuesta a la pregunta