【发布时间】:2020-07-06 12:36:24
【问题描述】:
更新到 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,但它是肮脏的解决方案。也许我需要将指针存储在某个地方并在将来清理它?
【问题讨论】:
-
奇怪的是每个人都急于更新而不费心阅读发行说明,这些说明对此非常明确。
-
developer.apple.com/documentation/xcode_release_notes/… 并搜索 danling。 bugs.swift.org/browse/SR-2790 似乎对此进行了更完整的讨论。
-
to function Crashed (at $0.load(as: T.self) line), Thread 1: EXC_BAD_ACCESS (code=1, address=0x20) , XCODE 11.5 Swift5
标签: swift unsafe-pointers swift5.2 xcode11.4