0

我想快速预分配内存并将其包装,NSMutableData但可以通过指针访问。所以我有这个:

var vertex = UnsafeMutablePointer<Float>.alloc(numberOfVertex * 3)
vertex.initialize(0)
vertexData = NSMutableData(bytesNoCopy: vertex, length: numberOfVertex * 3 * sizeof(Float))

但是当我检查vertex指针的地址时,我看到了不同的值,vertexData.bytes所以据我所知,我不能再使用指针来按索引更改数据。如何避免这种情况并且只有一个内存块?

4

1 回答 1

2

根据文档,您NSMutableData实际上不能以这种方式使用 no-copy 标志:

NSMutableData 也响应这些方法,但无论如何都会复制字节并立即释放缓冲区。

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/BinaryData/Tasks/WorkingBinaryData.html#//apple_ref/doc/uid/20000717-149014

于 2015-09-14T21:32:15.713 回答