gpt4 book ai didi

cocoa-touch - 在 swift 3 中将 UnsafeMutableRawPointer 转换为 UnsafeMutablePointer

转载 作者:行者123 更新时间:2023-12-02 20:26:26 24 4
gpt4 key购买 nike

我有这个代码

let grayData = UnsafeMutablePointer<UInt8>(other: malloc(width * height * sizeof(UInt8)))

它无法在 Swift 3 中编译。我该如何解决这个问题?

最佳答案

我遇到了类似的问题,但与 malloc 无关。如果您的代码需要使用 Swift 3 处理 C 库,则必须处理 void *相当于 UnsafeMutableRawPointer在 Swift 3 中。您的代码需要将其视为某种结构。但不知何故,Swift 3 编译器对我的转换非常严格。我花了一些时间才弄清楚,我喜欢分享我的代码如何做到这一点。

这里是演示强制转换的代码 UnsafeMutableRawPointerUnsafeMutablePointer<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"

关于cocoa-touch - 在 swift 3 中将 UnsafeMutableRawPointer 转换为 UnsafeMutablePointer<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39547504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com