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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。