快速结构警告"Initialization of 'UnsafeMutableRawPointer' results in a dangling pointer"



我搜索了许多类似问题的答案,但找不到解决此问题的正确答案。我有一个非常简单的结构

struct MyParameters {
var position: CGPoint
var size: Float
}

然后这个初始化

var parameters = MyParameters(position: .zero, size: 0)
let pointer = UnsafeMutableRawPointer(&parameters)

我在第二行收到警告

Initialization of 'UnsafeMutableRawPointer' results in a dangling pointer

我知道编译器在抱怨,因为它不确定指针指向的内存是否会继续存在。但是在这种情况下传递指针的正确方法是什么?

使用withUnsafeMutableBytes

func foo() {
var parameters = MyParameters(position: .zero, size: 0)

withUnsafeMutableBytes(of: &parameters) { pointer in
// here the lifetime is known
}
}

最新更新