これは正しい方法ですか?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と思われます。バッファを解放するのは私の責任ですか?
これはiOS 7/10.9にのみ該当します。 –
Thx、はい、リリースノートのリンクを追加しました。 – catlan
他の人のための解決策は何ですか? –