The type to temporarily bind the memory referenced by this pointer. The type T
must be the same size and be layout compatible with the pointer’s Pointee
type.
このポインタによって参照されるメモリを一時的に束縛する型。型 T
は、ポインタのもつPointee
型と同じサイズで、互換性のあるレイアウトでなければなりません。
withMemoryRebound(to:capacity:_:)
Availability
- iOS 8.0+
- iPadOS 8.0+
- macOS 10.10+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
- Xcode 8.0+
Technology
- Swift Standard Library Swift標準ライブラリ
Declaration 宣言
func withMemoryRebound<T, Result>(to type: T.Type, capacity count: Int
, _ body: (UnsafeMutablePointer
<T>) throws -> Result) rethrows -> Result
Parameters パラメータ
type
count
The number of instances of
Pointee
to bind totype
.Pointee
のインスタンスの数、type
に束縛されることになります。body
A closure that takes a mutable typed pointer to the same memory as this pointer, only bound to type
T
. The closure’s pointer 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: capacity: _:) T
に束縛しただけの、このポインタと同じメモリへの可変の型付ポインタをとります。クロージャのもつポインタ引数は、このクロージャの実行の間に対してだけ有効です。body
が戻り値を持つならば、その値はまたwith
メソッドの戻り値としても使われます。Memory Rebound(to: capacity: _:)
Return Value 戻り値
The return value, if any, of the body
closure parameter.
body
クロージャパラメータの戻り値、もしあれば。
Discussion 解説
Use this method when you have a pointer to memory bound to one type and you need to access that memory as instances of another type. Accessing memory as a 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 region of memory starting at this pointer and covering count
instances of the pointer’s Pointee
type must be initialized.
このポインタで始まりそしてポインタのもつPointee
型のcount
個のインスタンスを対象とするメモリ領域は、初期化されなければなりません。
The following example temporarily rebinds the memory of a UInt64
pointer to Int64
, then accesses a property on the signed integer.
以下の例は、 一時的にUInt64
ポインタのメモリをInt64
に再束縛します、それから符号付き整数上のあるプロパティにアクセスします。
Because this pointer’s memory is no longer bound to its Pointee
type while the body
closure executes, do not access memory using the original pointer from within body
. Instead, use the body
closure’s pointer argument to access the values in memory as instances of type T
.
このポインタのメモリがそれのPointee
型にはbody
クロージャの実行の間はもはや束縛されないことから、メモリにオリジナルのポインタを使ってbody
内からアクセスしないでください。代わりに、body
クロージャのもつポインタ引数を使うことで、メモリの中の値に型T
のインスタンスとしてアクセスしてください。
After executing body
, this method rebinds memory back to the original Pointee
type.
body
実行の後、このメソッドは、オリジナルのPointee
型へとメモリを再束縛し戻します。
Note 注意
Only use this method to rebind the pointer’s memory to a type with the same size and stride as the currently bound Pointee
type. To bind a region of memory to a type that is a different size, convert the pointer to a raw pointer and use the bind
method.
ポインタのもつメモリを現在バインドされるPointee
型と同じサイズおよびストライドを持つある型に再バインドするためにだけこのメソッドを使ってください。メモリのある領域を異なるサイズである型にバインドするには、ポインタを生のポインタに変換して、bind
メソッドを使ってください。