gpt4 book ai didi

快速转换 : ERROR - UnsafeMutablePointer

转载 作者:搜寻专家 更新时间:2023-11-01 07:17:21 30 4
gpt4 key购买 nike

我正在尝试将我的 Swift 2 代码转换为最新的语法 (Swift 3)。我收到以下错误:

Cannot invoke initializer for type 'UnsafeMutablePointer<CUnsignedChar>' with an argument list of type '(UnsafeMutableRawPointer!)

swift 2 代码:

let rawData = UnsafeMutablePointer<CUnsignedChar>(calloc(height * width * 4, Int(sizeof(CUnsignedChar))))

有人可以帮我解决这个转换语法问题吗?

最佳答案

calloc 返回一个“原始指针”(Swift 相当于 C 中的 void *)。您可以使用 assumingMemoryBound 将其转换为类型指针:

let rawData = calloc(width * height, MemoryLayout<CUnsignedChar>.stride).assumingMemoryBound(to: CUnsignedChar.self)

或者使用 UnsafeMutablePointerallocate() 方法:

let rawData = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: width * height)
rawData.initialize(to: 0, count: width * height)
// ...

rawData.deinitialize()
rawData.deallocate(capacity: width * height)

关于快速转换 : ERROR - UnsafeMutablePointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41418647/

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