Как преобразовать dispatch_data_t в 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 *

Все работает нормально. Меня больше всего беспокоят утечки памяти. Утечка буферов данных - это не весело. Итак, NSData, буфер и dispatch_data_t new_data_file в порядке?

Из того, что я могу прочитать на http://opensource.apple.com/source/libdispatch/libdispatch-187.7/dispatch/data.c, кажется, что буфер DISPATCH_DATA_DESTRUCTOR_FREE. Значит ли это, что я должен освободить буфер?

8
задан Brian Tompsett - 汤莱恩 19 November 2015 в 21:45
поделиться