我搜索了许多类似问题的答案,但没有找到正确的答案来解决这个问题。 我有一个很简单结构
struct MyParameters {
var position: CGPoint
var size: Float
}
然后这个初始化
var parameters = MyParameters(position: .zero, size: 0)
let pointer = UnsafeMutableRawPointer(¶meters)
我在第二行收到警告
Initialization of 'UnsafeMutableRawPointer' results in a dangling pointer
我理解编译器正在抱怨,因为它不确定指针指向的内存是否会继续存在。 但是在那种情况下传递指针的正确方式是什么呢?
使用withUnsafeMutableBytes
func foo() {
var parameters = MyParameters(position: .zero, size: 0)
withUnsafeMutableBytes(of: ¶meters) { pointer in
// here the lifetime is known
}
}