Après la mise à jour vers Swift 5.2/Xcode 11.4 a reçu un avertissement sur le code suivant:
extension Data {
init<T>(from value: T) {
var value = value
let pointer = UnsafeBufferPointer(start: &value, count: 1)
self.init(buffer: pointer)
}
func to<T>(type: T.Type) -> T {
return self.withUnsafeBytes { $0.load(as: T.self) }
}
}
En ligne let pointer = UnsafeBufferPointer (start: & value, count: 1) J'ai
L'initialisation de 'UnsafeBufferPointer' entraîne un pointeur de tampon suspendu
Je peux utiliser @silenceWarning mais c'est une solution sale. Peut-être ai-je besoin de stocker le pointeur quelque part et de le nettoyer à l'avenir?
J'ai trouvé une bonne réponse ici aller-retour Swift types de nombres vers/depuis les données
// value into Data
let data = withUnsafeBytes(of: value) { Data($0) }
// Data into value
_ = withUnsafeMutableBytes(of: &value, { data.copyBytes(to: $0)} )