Generic Instance Method 総称体インスタンスメソッド

withMemoryRebound(to:_:)

Executes the given closure while temporarily binding the memory referenced by this buffer to the given type. 与えられたクロージャを実行します、その間はこのバッファによって参照されるメモリを与えられた型に一時的に束縛しています。

Declaration 宣言

func withMemoryRebound<T, Result>(to type: T.Type, _ body: (UnsafeBufferPointer<T>) throws -> Result) rethrows -> Result

Parameters パラメータ

type

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型と同じサイズで、互換性のあるレイアウトでなければなりません。

body

A closure that takes a typed buffer to the same memory as this buffer, only bound to type T. The buffer argument contains the same number of complete instances of T as the original<br/>buffer’s count. The closure’s buffer argument is valid only for the duration of the closure’s execution. If body has a return value, that value is also used as the return value for the withMemoryRebound(to:_:) method. あるクロージャ、それは、型Tに束縛しただけの、このバッファと同じメモリに対する型付バッファをとります。バッファ引数は、オリジナルのバッファのもつcountと同じ数の完全なTのインスタンスを含まなければなりません。クロージャのもつバッファ引数は、このクロージャの実行の間に対してだけ有効です。bodyが戻り値を持つならば、その値はまたwithMemoryRebound(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型に再束縛します。