Pregunta

Estoy transmitiendo un código OSX a iOS y necesita acceder a los bytes de un CIIMAGE.La versión OSX hace esto con un NSBITMAPIMAGEREP, pero en iOS necesito saltar a través de algunos aros.

Aquí está el código que estoy tratando de ejecutar

CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent];
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef data = CGDataProviderCopyData(provider);

CGRect extent = [image extent];
//png.Load((UInt8*)CFDataGetBytePtr(data), extent.size.width, extent.size.height, true);

CFRelease(data);
//CGDataProviderRelease(provider);

funciona como se esperaba, pero después de un tiempo la aplicación se bloquea.No tengo ni idea de porqué.Estoy tomando una conjetura en la memoria de la memoria / la memoria fuera de los límites.Por lo que puedo decir, todo está siendo liberado correctamente ... Si comento esas líneas, nada se estrella.Si comento a CGDATAPROVIDERRELEASEAR en la aplicación se bloquea casi de inmediato.

¿Fue útil?

Solución

Creo que necesitas CFRELEASE (CGImage): usaste "Crear" para crearlo no?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top