当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift ContiguousArray withUnsafeBufferPointer(_:)用法及代码示例


实例方法

withUnsafeBufferPointer(_:)

使用指向数组连续存储的指针调用闭包。

声明

func withUnsafeBufferPointer<R>(_ body: (UnsafeBufferPointer<Element>) throws -> R) rethrows -> R

返回值

body 闭包参数的返回值(如果有)。

参数

body

带有 UnsafeBufferPointer 参数的闭包,该参数指向数组的连续存储。如果body 有返回值,则该值也用作withUnsafeBufferPointer(_:) 方法的返回值。指针参数仅在方法执行期间有效。

详述

通常,优化器可以消除数组算法中的边界检查,但是当失败时,在传递给闭包的缓冲区指针上调用相同的算法可以让您以安全换取速度。

以下示例显示了如何迭代缓冲区指针的内容:


let numbers = [1, 2, 3, 4, 5]
let sum = numbers.withUnsafeBufferPointer { buffer -> Int in
    var result = 0
    for i in stride(from: buffer.startIndex, to: buffer.endIndex, by: 2) {
        result += buffer[i]
    }
    return result
}
// 'sum' == 9

作为参数传递给 body 的指针仅在 withUnsafeBufferPointer(_:) 执行期间有效。不要存储或返回指针以供以后使用。

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 ContiguousArray withUnsafeBufferPointer(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。