UnsafeRawBufferPointer
声明
@frozen struct UnsafeRawBufferPointer
概述
您可以在低级操作中使用UnsafeRawBufferPointer
实例来消除唯一性检查和释放模式边界检查。边界检查始终在调试模式下执行。
UnsafeRawBufferPointer
实例是内存区域中原始字节的视图。内存中的每个字节都被视为一个UInt8
值,与该内存中保存的值的类型无关。通过原始缓冲区从内存中读取是一种无类型操作。
除了集合接口之外,UnsafeRawBufferPointer
实例还支持 UnsafeRawPointer
提供的 load(fromByteOffset:as:)
方法,包括调试模式下的边界检查。
要通过类型化操作访问底层内存,内存必须绑定到普通类型。
UnsafeRawBufferPointer 语义
UnsafeRawBufferPointer
实例是内存视图,并不拥有它引用的内存。复制UnsafeRawBufferPointer
类型的变量或常量不会复制底层内存。但是,使用 UnsafeRawBufferPointer
实例初始化另一个集合会将字节从引用的内存复制到新集合中。
以下示例使用 someBytes
(一个 UnsafeRawBufferPointer
实例)来演示分配缓冲区指针和使用缓冲区指针作为另一个集合元素的源之间的区别。在这里,对 destBytes
的赋值创建了一个新的、非拥有的缓冲区指针,覆盖了 someBytes
引用的内存的前 n
字节——没有任何内容被复制:
var destBytes = someBytes[0..<n]
接下来,destBytes
引用的字节被复制到 byteArray
一个新的 [UInt8]
数组中,然后将 someBytes
的其余部分附加到 byteArray
:
var byteArray: [UInt8] = Array(destBytes)
byteArray += someBytes[n..<someBytes.count]
可用版本
相关用法
- Swift UnsafeRawBufferPointer.Iterator dropFirst(_:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator max()用法及代码示例
- Swift UnsafeRawBufferPointer shuffled(using:)用法及代码示例
- Swift UnsafeRawBufferPointer isEmpty用法及代码示例
- Swift UnsafeRawBufferPointer enumerated()用法及代码示例
- Swift UnsafeRawBufferPointer subscript(_:)用法及代码示例
- Swift UnsafeRawBufferPointer starts(with:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator filter(_:)用法及代码示例
- Swift UnsafeRawBufferPointer firstIndex(where:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator drop(while:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator min()用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator contains(where:)用法及代码示例
- Swift UnsafeRawBufferPointer contains(where:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator contains(_:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator reduce(into:_:)用法及代码示例
- Swift UnsafeRawBufferPointer first(where:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator map(_:)用法及代码示例
- Swift UnsafeRawBufferPointer allSatisfy(_:)用法及代码示例
- Swift UnsafeRawBufferPointer last用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator sorted(by:)用法及代码示例
- Swift UnsafeRawBufferPointer suffix(_:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator compactMap(_:)用法及代码示例
- Swift UnsafeRawBufferPointer.Iterator prefix(while:)用法及代码示例
- Swift UnsafeRawBufferPointer randomElement(using:)用法及代码示例
- Swift UnsafeRawBufferPointer sorted()用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 UnsafeRawBufferPointer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。