我有这个代码
let grayData = UnsafeMutablePointer<UInt8>(other: malloc(width * height * sizeof(UInt8)))
它无法在 Swift 3 中编译。我该如何解决这个问题?
我遇到了类似的问题,但与malloc
。如果你的代码需要使用 Swift 3 处理 C 库,你必须处理void *
这相当于UnsafeMutableRawPointer
在 Swift 3 中。您的代码需要将其视为某种结构。但不知何故,Swift 3 编译器对我的转换非常严格。我花了一些时间来解决这个问题,并且我喜欢分享我的代码如何做到这一点。
这是演示强制转换的代码UnsafeMutableRawPointer
to UnsafeMutablePointer<T>
,修改其pointee,并确保原来的Context
已更新。
struct Context {
var city = "Tokyo"
}
var context: Context = Context()
let rawPtr = UnsafeMutableRawPointer(&context)
let opaquePtr = OpaquePointer(rawPtr)
let contextPtr = UnsafeMutablePointer<Context>(opaquePtr)
context.city // "Tokyo"
contextPtr.pointee.city = "New York"
context.city // "New York"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)