实例方法
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:_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。