文書   >   Swift   >   Array   >   withUnsafeBytes(_:)
汎用インスタンスメソッド
withUnsafeBytes(_:)
与えられたクロージャを、配列の連続した記憶領域の基礎となるバイトへのポインタで呼び出します。
宣言
パラメータ
body | 配列の連続した記憶領域を指す UnsafeRawBufferPointer パラメータを持つクロージャ。そのような記憶領域が存在しない場合は、作成されます。body に戻り値がある場合、その値はまた withUnsafeBytes(_:) メソッドの戻り値としても使用されます。引数は、クロージャの実行中だけ有効です。 |
戻り値
もしあれば、body クロージャパラメータの戻り値。
議論
配列の Element 型は 些細な型 (trivial type) でなければなりません。これは、間接操作や参照カウント操作を行わずに、ビット単位でコピーできます。一般的に、強いまたは弱い参照を含まないネイティブの Swift 型は、インポートされた C 構造体および列挙型と同様に、些細です。
以下の例では、numbers 配列のバイトを UInt8 のバッファにコピーします。
var numbers = [1, 2, 3]
var byteBuffer: [UInt8] = []
numbers.withUnsafeBytes {
byteBuffer.append(contentsOf: $0)
}
// byteBuffer == [1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, ...]
以下も見よ
基礎となる記憶領域へのアクセス
func withUnsafeBufferPointer<R>((UnsafeBufferPointer<Element>) -> R) -> R
配列の連続した記憶領域へのポインタでクロージャを呼び出します。
与えられたクロージャを、配列の可変の連続した記憶領域へのポインタで呼び出します。
func withUnsafeMutableBytes<R>((UnsafeMutableRawBufferPointer) -> R) -> R
与えられたクロージャを、配列の可変の連続した記憶領域の基礎となるバイトへのポインタで呼び出します。
func withContiguousStorageIfAvailable<R>((UnsafeBufferPointer<Element>) -> R) -> R?
トップへ
トップへ
トップへ
トップへ
トップへ