swift中的指针:UnsafemeutableBufferPointer的用途

swift中的指针:UnsafemeutableBufferPointer的用途,swift,pointers,Swift,Pointers,目前正在研究swift指针 UnsafePointer和unsafemeutablepointer提供指向字节的指针。通过使用指针算法,您可以访问剩余的字节 类似的操作可以通过unsafemtablebufferpointer完成,该指针具有endIndex参数。因此,当访问例如NSData中的字节时,使用UnsafemtableBufferPointer与UnsafemtablePointer相比,有什么优点/区别呢?UnsafemtablePointer是为访问类型为T的单个元素而设计的。其

目前正在研究swift指针

UnsafePointer
unsafemeutablepointer
提供指向字节的指针。通过使用指针算法,您可以访问剩余的字节


类似的操作可以通过
unsafemtablebufferpointer
完成,该指针具有endIndex参数。因此,当访问例如NSData中的字节时,使用
UnsafemtableBufferPointer
UnsafemtablePointer
相比,有什么优点/区别呢?

UnsafemtablePointer
是为访问类型为
T
的单个元素而设计的。其接口设计用于访问单个标量值

另一方面,
unsafemtablebufferpointer
设计用于访问存储在连续内存块中的
T
类型的一组元素。它的接口设计用于访问范围的各个元素,也用于将整个集合作为单个单元处理(例如
generate
方法)


如果您访问
NSData
中的字节,仅
UnsafePointer
是不够的,因为您需要知道数据的长度。相反,一个
UnsafeBufferPointer
就足以表示数据,因为它提供了初始位置和元素数。

您可以通过调用data.length手动跟踪字节。虽然,现在我想起来了,这里有一个风险。NSData不保证是连续的。