2021年4月22日木曜日

Initialization of 'UnsafePointer' results in a dangling pointer

Initialization of 'UnsafePointer<UInt8>' results in a dangling pointer

概要

Swift5 に対応したら UnsafePointer を生成する部分で警告が表示されるようになったので対応しました

環境

  • Swift5
  • Xcode 12.4 (12D4e)

警告されるコード

let start = Data(bytes: UnsafePointer<UInt8>([0xFF, 0xFF, 0xFF, 0xFF, 0xFF] as [UInt8]), count: 5)

Data を生成するのに UnsafePointer を使っていました
これを警告が出ないように修正しました

対応したコード

let bytes = UnsafeMutableRawPointer.allocate(byteCount: 4, alignment: 1)
bytes.storeBytes(of: 0xFFFF_FFFF, as: UInt32.self)
let start = Data(bytes: bytes, count: 4)

UnsafeMutableRawPointer を生成しそこから Data を生成するように変更しました
これで警告は表示されなくなりました

参考サイト

0 件のコメント:

コメントを投稿