2011-08-10 9 views
5

me dio la siguiente línea de código:iOS: cómo resolver esta advertencia pérdida de memoria

mainLayer.shadowColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), components); 

Cuando corro Producto-> Analizar en Xcode me da la advertencia:

Potential leak of an object allocated on line 176 

Para que significa que no libero mi CGColor. Por lo tanto, pensé que una buena solución sería la siguiente:

CGColorRef shadowColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), components); 
mainLayer.shadowColor = shadowColor; 
CGColorRelease(shadowColor); 

Pero aún así obtener la misma advertencia de fugas. ¿Cómo repare el problema?

Respuesta

16

También hay que liberar espacio de color:

CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); 
CGColorRef shadowColor = CGColorCreate(colorspace, components); 
mainLayer.shadowColor = shadowColor; 
CGColorRelease(shadowColor); 
CGColorSpaceRelease(colorspace); 
1

es la siguiente:

CGColorSpaceCreateDeviceRGB() 

por cualquier cambio de devolver un objeto que es responsable de cancelar la asignación? Pensé que recordaba que había una función como CGColorSpaceRelease().