實例方法
with
withMemoryRebound(to:capacity:_:)
執行給定的閉包,同時將內存臨時綁定到指定數量的
T
類型的實例。聲明
func withMemoryRebound<T, Result>(
to type: T.Type,
capacity count: Int,
_ body: (UnsafeMutablePointer<T>) throws -> Result
) rethrows -> Result
返回值
body
閉包參數的返回值(如果有)。
參數
type
臨時綁定此指針引用的內存的類型。此指針必須是此類型對齊的倍數。
count
重新綁定區域中
T
的實例數。body
一個閉包,它將類型化指針指向與此指針相同的內存,僅綁定到類型
T
。閉包的指針參數僅在閉包執行期間有效。如果body
有返回值,則該值也用作withMemoryRebound(to:capacity:_:)
方法的返回值。pointer
指針臨時綁定到
T
。
詳述
當您有指向原始內存的指針並且需要將該內存作為給定類型 T
的實例訪問時,請使用此方法。以T
類型訪問內存需要將內存綁定到該類型。一個內存位置一次隻能綁定到一種類型,因此在不首先重新綁定內存的情況下訪問與不相關類型相同的內存是未定義的。
重新綁定區域內的T
的任何實例都可以被初始化或未初始化。 T
的任何單個實例的底層內存必須具有相同的初始化狀態(即已初始化或未初始化)。訪問底層內存處於混合初始化狀態的 T
應是未定義的行為。
以下示例臨時將原始內存指針重新綁定到 Int64
,然後修改有符號整數。
let pointer: UnsafeMutableRawPointer = fetchValue()
pointer.withMemoryRebound(to: Int64.self, capacity: 1) {
$0.pointee.negate()
}
執行 body
後,此方法將內存重新綁定回其原始綁定狀態。這可以是未綁定的內存,也可以綁定到不同的類型。
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相關用法
- Swift UnsafeMutableRawPointer ..<(_:_:)用法及代碼示例
- Swift UnsafeMutableRawPointer ...(_:_:)用法及代碼示例
- Swift UnsafeMutableRawPointer initializeMemory(as:repeating:count:)用法及代碼示例
- Swift UnsafeMutableRawPointer advanced(by:)用法及代碼示例
- Swift UnsafeMutableRawPointer ..<(_:)用法及代碼示例
- Swift UnsafeMutableRawPointer bindMemory(to:capacity:)用法及代碼示例
- Swift UnsafeMutableRawPointer storeBytes(of:toByteOffset:as:)用法及代碼示例
- Swift UnsafeMutableRawPointer initializeMemory(as:from:count:)用法及代碼示例
- Swift UnsafeMutableRawPointer ...(_:)用法及代碼示例
- Swift UnsafeMutableRawPointer用法及代碼示例
- Swift UnsafeMutableRawBufferPointer shuffle()用法及代碼示例
- Swift UnsafeMutableRawBufferPointer compactMap(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer contains(where:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer allSatisfy(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer map(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer starts(with:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer isEmpty用法及代碼示例
- Swift UnsafeMutableRawBufferPointer sorted()用法及代碼示例
- Swift UnsafeMutableRawBufferPointer indices用法及代碼示例
- Swift UnsafeMutableRawBufferPointer randomElement(using:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer reduce(_:_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer sort(by:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer lexicographicallyPrecedes(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer forEach(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 UnsafeMutableRawPointer withMemoryRebound(to:capacity:_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。