withMemoryRebound(to:capacity:_:)
T
類型的實例。聲明
func withMemoryRebound<T, Result>(
to type: T.Type,
capacity count: Int,
_ body: (UnsafePointer<T>) throws -> Result
) rethrows -> Result
返回值
body
閉包參數的返回值(如果有)。
參數
type
臨時綁定此指針引用的內存的類型。
T
類型的布局必須與指針的Pointee
類型兼容。count
重新綁定區域中
T
的實例數。body
一個閉包,它將類型化指針指向與此指針相同的內存,僅綁定到類型
T
。閉包的指針參數僅在閉包執行期間有效。如果body
有返回值,則該值也用作withMemoryRebound(to:capacity:_:)
方法的返回值。pointer
指針臨時綁定到
T
。
詳述
當您有一個指向綁定到一種類型的內存的指針並且您需要將該內存作為另一種類型的實例來訪問時,請使用此方法。以T
類型訪問內存需要將內存綁定到該類型。一個內存位置一次隻能綁定到一種類型,因此在不首先重新綁定內存的情況下訪問與不相關類型相同的內存是未定義的。
從此指針開始並覆蓋 T
實例的 count
跨度的內存區域必須綁定到 Pointee
。重新綁定區域內的T
的任何實例都可以被初始化或未初始化。 Pointee
的每個實例與 T
的給定實例重疊應具有相同的初始化狀態(即已初始化或未初始化)。訪問其底層 Pointee
存儲處於混合初始化狀態的 T
應為未定義行為。
以下示例臨時將 UInt64
指針的內存重新綁定到 Int64
,然後訪問有符號整數的屬性。
let uint64Pointer: UnsafePointer<UInt64> = fetchValue()
let isNegative = uint64Pointer.withMemoryRebound(
to: Int64.self, capacity: 1
) {
return $0.pointee < 0
}
因為在 body
閉包執行時,該指針的內存不再綁定到它的 Pointee
類型,所以不要使用 body
中的原始指針訪問內存。相反,使用 body
閉包的指針參數來訪問內存中的值作為類型 T
的實例。
執行 body
後,此方法將內存重新綁定回原始的 Pointee
類型。
可用版本
相關用法
- Swift UnsafePointer ...(_:)用法及代碼示例
- Swift UnsafePointer ..<(_:)用法及代碼示例
- Swift UnsafePointer ...(_:_:)用法及代碼示例
- Swift UnsafePointer ..<(_:_:)用法及代碼示例
- Swift UnsafePointer用法及代碼示例
- Swift UnsafeMutableRawPointer ..<(_:_:)用法及代碼示例
- Swift UnsafeBufferPointer randomElement()用法及代碼示例
- Swift UnsafeRawBufferPointer.Iterator dropFirst(_:)用法及代碼示例
- Swift UnsafeMutablePointer allocate(capacity:)用法及代碼示例
- Swift UnsafeRawBufferPointer.Iterator max()用法及代碼示例
- Swift UnsafeBufferPointer min(by:)用法及代碼示例
- Swift UnsafeMutableBufferPointer allocate(capacity:)用法及代碼示例
- Swift UnsafeRawBufferPointer shuffled(using:)用法及代碼示例
- Swift UnsafeBufferPointer prefix(upTo:)用法及代碼示例
- Swift UnsafeMutableRawPointer ...(_:_:)用法及代碼示例
- Swift UnsafeMutableBufferPointer prefix(through:)用法及代碼示例
- Swift UnsafeRawBufferPointer isEmpty用法及代碼示例
- Swift UnsafeMutableRawBufferPointer shuffle()用法及代碼示例
- Swift UnsafeRawPointer advanced(by:)用法及代碼示例
- Swift UnsafeRawBufferPointer enumerated()用法及代碼示例
- Swift UnsafeBufferPointer firstIndex(of:)用法及代碼示例
- Swift UnsafeMutableBufferPointer map(_:)用法及代碼示例
- Swift UnsafeMutablePointer withMemoryRebound(to:capacity:_:)用法及代碼示例
- Swift UnsafeRawBufferPointer subscript(_:)用法及代碼示例
- Swift UnsafeBufferPointer map(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 UnsafePointer withMemoryRebound(to:capacity:_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。