web-dev-qa-db-ja.com

Swift 5のUnsafeMutablePointer警告

私はこれを持っていました:

let alphaPtr = UnsafeMutablePointer<vImagePixelCount>(mutating: alpha) as UnsafeMutablePointer<vImagePixelCount>?

これで警告が表示されます:

'UnsafeMutablePointer'(別名 'UnsafeMutablePointer')を初期化すると、ダングリングポインターになります。

詳細な警告は以下で構成されます:

  1. '[vImagePixelCount]'(別名 'Array')から 'UnsafePointer'(別名 'UnsafePointer')への暗黙的な引数変換は、 'init(mutating :)'の呼び出しの間のみ有効なポインターを生成します

  2. 定義されたスコープに有効なバッファポインタに引数を明示的に変換するために、配列で「withUnsafeBufferPointer」メソッドを使用します

これを回避する方法はありますか?

2
Gizmodo

ArrayのwithUnsafeBufferPointerメソッドを次のように使用する必要がありますか

_var alphaPtr: UnsafeBufferPointer = alpha.withUnsafeBufferPointer { $0 }
_

このコマンドは、特定の型で作業する必要がある場合にオプションのポインターを生成します。bindMemory(to:)または要件に一致するその他の関数を使用できます。

関数パラメーターとしてUnsafeRawPointerが必要な場合は、_&alpha_を使用することがあります。

0
TheOliverDenis