2012-06-24 18 views
6

Digamos que tengo este pedazo de código:¿Debo liberar CGColorSpaceRef en ARC?

CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB(); 

CGContextSetStrokeColorSpace(context, colorSpaceRGB); 
CGContextSetFillColorSpace(context, colorSpaceRGB); 

Después de eso me hago un poco de dibujo. Cuando haya terminado, ¿Debo liberar manualmente colorSpaceRGB si estoy usando ARC? De esta manera:

CGColorSpaceRelease(colorSpaceRGB); 

O no necesito hacer nada?

Gracias :)

+0

Esta respuesta explica también por qué y cuándo necesidad de liberar cualquier objeto. Por favor, consulte: http://stackoverflow.com/a/21967681/2849443 –

Respuesta

10

Sí. De acuerdo con el documento de Apple: Porque la función CGColorSpaceRelease es equivalente a CFRelease, excepto que no causa un error si el parámetro cs es NULL. Y si crea, copia o retiene explícitamente un objeto Core Foundation, será responsable de liberarlo cuando ya no lo necesite (consulte la Guía de programación de administración de memoria para Core Foundation).

0

Actualización para Swift 4.0:

Esto ya no es necesario en las versiones actuales de Swift.

CGColorSpaceRelease(colorSpace) 

Esta línea de código ahora da el siguiente mensaje:

'CGColorSpaceRelease' no está disponible: objetos de la Fundación Core son automáticamente memoria administrada

Cuestiones relacionadas