¿Es esta la manera correcta?Cómo convertir dispatch_data_t a NSData?
// convert
const void *buffer = NULL;
size_t size = 0;
dispatch_data_t new_data_file = dispatch_data_create_map(data, &buffer, &size);
if(new_data_file){ /* to avoid warning really - since dispatch_data_create_map demands we care about the return arg */}
NSData *nsdata = [[NSData alloc] initWithBytes:buffer length:size];
// use the nsdata... code removed for general purpose
// clean up
[nsdata release];
free(buffer); // warning: passing const void * to parameter of type void *
Está funcionando bien. Mi principal preocupación es la pérdida de memoria. Los buffers de datos que se escapan no son divertidos. Entonces, ¿están bien el NSData, el buffer y el dispatch_data_t new_data_file?
Por lo que puedo leer en http://opensource.apple.com/source/libdispatch/libdispatch-187.7/dispatch/data.c parece que el búfer es DISPATCH_DATA_DESTRUCTOR_FREE. ¿Eso significa que es mi responsabilidad liberar el buffer?
Esto solo es cierto en iOS 7/10.9 –
Thx, sí, agregué el enlace de la nota de la versión. – catlan
¿Cuál será la solución para los demás? –