私はこれを持っていました:
let alphaPtr = UnsafeMutablePointer<vImagePixelCount>(mutating: alpha) as UnsafeMutablePointer<vImagePixelCount>?
これで警告が表示されます:
'UnsafeMutablePointer'(別名 'UnsafeMutablePointer')を初期化すると、ダングリングポインターになります。
詳細な警告は以下で構成されます:
'[vImagePixelCount]'(別名 'Array')から 'UnsafePointer'(別名 'UnsafePointer')への暗黙的な引数変換は、 'init(mutating :)'の呼び出しの間のみ有効なポインターを生成します
定義されたスコープに有効なバッファポインタに引数を明示的に変換するために、配列で「withUnsafeBufferPointer」メソッドを使用します
これを回避する方法はありますか?
ArrayのwithUnsafeBufferPointer
メソッドを次のように使用する必要がありますか
_var alphaPtr: UnsafeBufferPointer = alpha.withUnsafeBufferPointer { $0 }
_
このコマンドは、特定の型で作業する必要がある場合にオプションのポインターを生成します。bindMemory(to:)
または要件に一致するその他の関数を使用できます。
関数パラメーターとしてUnsafeRawPointer
が必要な場合は、_&alpha
_を使用することがあります。