gpt4 book ai didi

ios - dataWithBytes、dataWithBytes 和 initWithBytes 之间有什么区别?

转载 作者:行者123 更新时间:2023-11-28 21:51:30 29 4
gpt4 key购买 nike

我是 iOS 编程的新手。我有一个带签名的函数

(NSData*) Decrypt;

在函数中我必须从 char* 缓冲区构建 NSData* 并且我正在尝试这三个函数。

NSData *returnData = [[NSData alloc] initWithBytes:buffer length:buflength];
NSData *returnData = [NSData dataWithBytes:buffer length:buflength];
NSData *returnData = [NSData dataWithBytesNoCopy:buffer length:buflength];

return returnData;

此外,此代码也有效。

return [NSData dataWithBytesNoCopy:buffer length:buflength]

除了

之外的一切
NSData *returnData = [NSData dataWithBytesNoCopy:buffer length:buflength];

工作正常。是什么原因 ?它们之间有什么区别,哪个更好用?

最佳答案

[[NSData alloc] initWithBytes:buffer length:buflength][NSData dataWithBytes:buffer length:buflength]是一样的,第二个只是第一个的简写。这些方法创建一个包含从 buffer 字节复制的 buflength 字节的数据对象。

[NSData dataWithBytesNoCopy:buffer length:buflength] 创建一个数据对象,该对象包含 buffer 字节中的 buflength 字节。返回的对象拥有 buffer 指针的所有权,并在释放时释放它。因此,buffer 必须指向用malloc 分配的内存块。

关于ios - dataWithBytes、dataWithBytes 和 initWithBytes 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160740/

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