當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Swift UnsafeRawPointer withMemoryRebound(to:capacity:_:)用法及代碼示例

實例方法

withMemoryRebound(to:capacity:_:)

執行給定的閉包,同時將內存臨時綁定到指定數量的 T 類型的實例。

聲明

func withMemoryRebound<T, Result>(
    to type: T.Type,
    capacity count: Int,
    _ body: (UnsafePointer<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: UnsafeRawPointer = fetchValue()
let isNegative = pointer.withMemoryRebound(
    to: Int64.self, capacity: 1
) {
    return $0.pointee < 0
}

執行 body 後,此方法將內存重新綁定回其原始綁定狀態。這可以是未綁定的內存,也可以綁定到不同的類型。

可用版本

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

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 UnsafeRawPointer withMemoryRebound(to:capacity:_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。