Đây có phải là cách phù hợp không?Làm thế nào để chuyển đổi dispatch_data_t sang 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 *
Nó hoạt động tốt. Mối quan tâm chính của tôi là rò rỉ bộ nhớ. Rò rỉ bộ đệm dữ liệu không phải là niềm vui. Vì vậy, là NSData, bộ đệm và dispatch_data_t new_data_file tất cả tiền phạt?
Từ những gì tôi có thể đọc trên http://opensource.apple.com/source/libdispatch/libdispatch-187.7/dispatch/data.c có vẻ như bộ đệm là DISPATCH_DATA_DESTRUCTOR_FREE. Điều đó có nghĩa là tôi có trách nhiệm giải phóng bộ đệm không?
Điều này chỉ đúng trên iOS 7/10.9 –
Thx, vâng, tôi đã thêm liên kết ghi chú phát hành. – catlan
Giải pháp cho người khác là gì? –