Generic Function

withUnsafeBytes(of:_:)

Invokes the given closure with a buffer pointer covering the raw bytes of the given argument. 与えられたクロージャを、与えられた引数の生のバイトを変換しているバッファポインタとともに発動します。

Declaration 宣言

func withUnsafeBytes<T, Result>(of value: inout T, _ body: (UnsafeRawBufferPointer) throws -> Result) rethrows -> Result

Parameters パラメータ

value

An instance to temporarily access through a raw buffer pointer. Note that the inout exclusivity rules mean that, like any other inout argument, value cannot be directly accessed by other code for the duration of body. Access must only occur through the pointer argument to body until body returns. 生のバッファポインタを通して一時的にアクセスされることになるインスタンス。inout排他規則が意味することに注意してください、何か他のinoutと同様に、valuebodyの継続期間には他のコードによって直接にアクセス可能ではありません。アクセスは、bodyに対するポインタ引数を通して、bodyが返るまでに、発生するだけでなければなりません。

body

A closure that takes a raw buffer pointer to the bytes of value as its sole argument. If the closure has a return value, that value is also used as the return value of the withUnsafeBytes(of:_:) function. The buffer pointer argument is valid only for the duration of the closure’s execution. It is undefined behavior to attempt to mutate through the pointer by conversion to UnsafeMutableRawBufferPointer or any other mutable pointer type. If you want to mutate a value by writing through a pointer, use withUnsafeMutableBytes(of:_:) instead. valueのバイトへの生のバッファポインタをそれの唯一の引数として取るクロージャ。クロージャが戻り値を持つならば、その値はまたwithUnsafeBytes(of:_:)関数の戻り値としても使われます。バッファポインタは、ただクロージャの実行の間に対してのみ有効とされます。ポインタを通してUnsafeMutableRawBufferPointerまたは何か他の可変ポインタ型への変換によって変化させようと試みることは、未定義挙動です。あなたがある値をポインタを通して書き込むことで変化させたいならば、withUnsafeMutableBytes(of:_:)を代わりに使ってください。

Return Value 戻り値

The return value, if any, of the body closure. bodyクロージャの、もしあれば、戻り値。

Discussion 解説

The buffer pointer argument to the body closure provides a collection interface to the raw bytes of value. The buffer is the size of the instance passed as value and does not include any remote storage. bodyクロージャへのバッファポインタ引数は、valueの生のバイトへのコレクションインターフェイスを提供します。バッファは、valueとして渡されるインスタンスの大きさで、あらゆるリモートストレージを含みません。

See Also 参照

Memory Access メモリアクセス