Swift 5.2/Xcode 11.4にアップデートすると、次のコードに対する警告が表示されます。
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) }
}
}
オンラインlet pointer = UnsafeBufferPointer(start:&value、count:1)取得
「UnsafeBufferPointer」を初期化すると、ダングリングバッファーポインターが発生します
@silenceWarningを使用できますが、それは汚いソリューションです。多分私はどこかにポインターを保存して将来それをきれいにする必要がありますか?
ここで良い答えが見つかりました 往復Swiftデータへの/からの数値タイプ
// value into Data
let data = withUnsafeBytes(of: value) { Data($0) }
// Data into value
_ = withUnsafeMutableBytes(of: &value, { data.copyBytes(to: $0)} )