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:
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 :)'
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?
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.