The type to temporarily bind the memory referenced by this buffer. The type T
must have the same size and be layout compatible with the pointer’s Element
type.
このバッファによって参照されるメモリを一時的に束縛する型。型 T
は、ポインタのもつElement
型と同じサイズで、互換性のあるレイアウトでなければなりません。
withMemoryRebound(to:_:)
Availability
- iOS 8.0+
- iPadOS 8.0+
- macOS 10.10+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
- Xcode 9.3+
Technology
- Swift Standard Library Swift標準ライブラリ
Declaration 宣言
func withMemoryRebound<T, Result>(to type: T.Type, _ body: (UnsafeMutableBufferPointer
<T>) throws -> Result) rethrows -> Result
Parameters パラメータ
type
body
A closure that takes a mutable typed buffer to the same memory as this buffer, only bound to type
T
. The buffer argument contains the same number of complete instances ofT
as the original<br/>buffer’scount
. The closure’s buffer argument is valid only for the duration of the closure’s execution. Ifbody
has a return value, that value is also used as the return value for thewith
method. あるクロージャ、それは、型Memory Rebound(to: _:) T
に束縛しただけの、このバッファと同じメモリに対する可変の型付バッファをとります。バッファ引数は、オリジナルのバッファのもつcount
と同じ数の完全なT
のインスタンスを含まなければなりません。クロージャのもつバッファ引数は、このクロージャの実行の間に対してだけ有効です。body
が戻り値を持つならば、その値はまたwith
メソッドの戻り値としても使われます。Memory Rebound(to: _:)
Return Value 戻り値
The return value, if any, of the body
closure parameter.
body
クロージャパラメータの戻り値、もしあれば。
Discussion 解説
Use this method when you have a buffer of memory bound to one type and you need to access that memory as a buffer of another type. Accessing memory as type T
requires that the memory be bound to that type. A memory location may only be bound to one type at a time, so accessing the same memory as an unrelated type without first rebinding the memory is undefined.
このメソッドを使うのは、あなたがある型に束縛されるメモリのバッファを持つ、そしてあなたがそのメモリに別の型のバッファとしてアクセスする必要がある場合です。メモリに型T
としてアクセスすることは、メモリがその型に束縛されることを必要とします。あるメモリ位置は一度に1つの型へとバインド(束縛)されるだけでしょう、なので同じメモリに関連のない型として最初にメモリ再バインドすることなしにアクセスすることは、未定義となります。
The entire region of memory referenced by this buffer must be initialized. このバッファによって参照されるメモリの全領域は、初期化されなければなりません。
Because this buffer’s memory is no longer bound to its Element
type while the body
closure executes, do not access memory using the original buffer from within body
. Instead, use the body
closure’s buffer argument to access the values in memory as instances of type T
.
このバッファのもつメモリがそれのElement
型にはbody
クロージャの実行の間はもはや束縛されないことから、メモリにオリジナルのバッファを使ってbody
内からアクセスしないでください。代わりに、body
クロージャの持つバッファ引数を使ってメモリ中の値に型T
のインスタンスとしてアクセスしてください。
After executing body
, this method rebinds memory back to the original Element
type.
body
の実行の後、このメソッドはメモリを元々のElement
型に再束縛します。
Note 注意
Only use this method to rebind the buffer’s memory to a type with the same size and stride as the currently bound Element
type. To bind a region of memory to a type that is a different size, convert the buffer to a raw buffer and use the bind
method.
バッファのもつメモリを現在バインドされるElement
型と同じサイズおよびストライドを持つある型に再バインドするためにだけこのメソッドを使ってください。あるメモリ領域を異なるサイズの型に束縛するには、そのバッファを新しい生のバッファに変換して、bind
メソッドを使ってください。