作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据Apple文档,类方法
+datawithBytesNoCopy:length:freeWhenDone:
继承自NSData
Creates and returns a data object that holds a given number of bytes from a given buffer.
但是
NSUInteger len = 1024;
char *buffer = malloc(len);
NSMutableData *data = [NSMutableData dataWithBytesNoCopy:buffer length:len freeWhenDone:YES];
char *dataBytes = data.mutableBytes;
NSLog(@"%@", dataBytes == buffer ? @":D" : @":(");
打印
:(
该方法似乎实际上复制了一份副本,而我期望它不会这样做。我是否以错误的方式使用它?等效的 NSData 方法按预期工作。如何创建一个指向已存在缓冲区的 NSMutableData 对象而不获取任何所有权?
最佳答案
我猜你就是做不到你想做的事。毕竟,如果您有一个 NSMutableData 并向其附加更多数据,则需要重新分配缓冲区,并且不再使用您提供的指针。
苹果的Binary Data Programming Guide表示在 NSMutableData
的情况下,无论如何都会复制字节。
关于cocoa - NSMutableData datawithBytesNoCopy :length:freeWhenDone: seems to make a copy of the buffer provided to it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770265/
我是一名优秀的程序员,十分优秀!