web-dev-qa-db-fra.com

Avertissement UnsafeMutablePointer avec Swift 5

J'avais ceci:

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

Lequel maintenant je reçois l'avertissement:

L'initialisation de 'UnsafeMutablePointer' (alias 'UnsafeMutablePointer') entraîne un pointeur suspendu

L'avertissement détaillé comprend:

  1. La conversion d'argument implicite de '[vImagePixelCount]' (alias 'Array') en 'UnsafePointer' (alias 'UnsafePointer') produit un pointeur valide uniquement pendant la durée de l'appel à 'init (mutating :)'

  2. Utilisez la méthode 'withUnsafeBufferPointer' sur Array afin de convertir explicitement l'argument en pointeur de tampon valide pour une portée définie

Y a-t-il un moyen de contourner ceci?

2
Gizmodo

Avez-vous besoin d'utiliser la méthode withUnsafeBufferPointer de Array comme

var alphaPtr: UnsafeBufferPointer = alpha.withUnsafeBufferPointer { $0 }

cette commande produit un pointeur facultatif si vous avez besoin de travailler avec un type spécifique pourriez-vous utiliser bindMemory(to:) ou une autre fonction qui correspond à vos besoins.

Parfois, utilisez un &alpha Si vous avez besoin d'un UnsafeRawPointer comme paramètre de fonction.

0
TheOliverDenis