A closure with an Unsafe
parameter that points to the contiguous storage for the array. If body
has a return value, that value is also used as the return value for the with
method. The pointer argument is valid only for the duration of the method’s execution.
あるクロージャでUnsafe
パラメータを持ち、それはその配列のための隣接ストレージを指し示します。body
が戻り値を持つならば、その値はまたwith
メソッドの戻り値としても使われます。ポインタ引数は、ただメソッドの実行の間に対してのみ有効です。
withUnsafeMutableBufferPointer(_:)
Availability
- iOS 8.0+
- iPadOS 8.0+
- macOS 10.10+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
- Xcode 10.0+
Technology
- Swift Standard Library Swift標準ライブラリ
Declaration 宣言
mutating func withUnsafeMutableBufferPointer<R>(_ body: (inout UnsafeMutableBufferPointer
<Element>) throws -> R) rethrows -> R
Parameters パラメータ
body
Mutable Buffer Pointer Unsafe Mutable Buffer Pointer(_:) Mutable Buffer Pointer Unsafe Mutable Buffer Pointer(_:)
Return Value 戻り値
The return value, if any, of the body
closure parameter.
body
クロージャパラメータの戻り値、もしあれば。
Discussion 解説
Often, the optimizer can eliminate bounds checks within an array algorithm, but when that fails, invoking the same algorithm on the buffer pointer passed into your closure lets you trade safety for speed. しばしば、最適化機能は配列アルゴリズム内部で境界検査を省くことができます、しかしそれが失敗する時、同じアルゴリズムをあなたのクロージャへ渡されるバッファポインタ上で発動することは、あなたに安全をスピードと交換させます。
The following example shows how modifying the contents of the Unsafe
argument to body
alters the contents of the array:
以下の例は、body
へのUnsafe
引数の内容の修正が、配列の内容を改めることを示します:
The pointer passed as an argument to body
is valid only during the execution of with
. Do not store or return the pointer for later use.
引数としてbody
に渡されるポインタは、with
の実行の間のみ有効です。後で使うためにポインタを格納したり返したりしないでください。
Warning 警告
Do not rely on anything about the array that is the target of this method during execution of the body
closure; it might not appear to have its correct value. Instead, use only the Unsafe
argument to body
.
このメソッドのターゲットである配列についてbody
クロージャの実行の間に何であれ依存しないでください:それは、それの正しい値を持つように見えないでしょう。その代わりに、Unsafe
引数だけをbody
に使ってください。