gpt4 book ai didi

ios - 如何将 dispatch_data_t 转换为 NSData?

转载 作者:可可西里 更新时间:2023-11-01 03:07:01 24 4
gpt4 key购买 nike

这是正确的方法吗?

// 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、buffer 和 dispatch_data_t new_data_file 都可以吗?

根据我在 http://opensource.apple.com/source/libdispatch/libdispatch-187.7/dispatch/data.c 上可以阅读的内容缓冲区似乎是 DISPATCH_DATA_DESTRUCTOR_FREE。这是否意味着释放缓冲区是我的责任?

最佳答案

自 iOS 7 和 macOS 10.9 ( Foundation Release Notes ) dispatch_data_t是 64 位应用程序中的 NSObject ( NSObject <OS_dispatch_data> )。

dispatch_data_t现在可以自由转换到NSData * ,虽然反之亦然

关于ios - 如何将 dispatch_data_t 转换为 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com