类型转换 不安全可变指针<Void>指向不安全可变指针<#Struct类型#>



我在Swift中创建了一个名为RGB的结构,很简单:

struct PixelRGB {
    var r: CUnsignedChar = 0
    var g: CUnsignedChar = 0
    var b: CUnsignedChar = 0
    init(red: CUnsignedChar, green: CUnsignedChar, blue: CUnsignedChar) {
        r = red
        g = green
        b = blue
    }
}

我有一个指针var imageData: UnsafeMutablePointer<PixelRGB>!

我想为这个指针分配一些空间,但malloc返回UnsafeMutablePointer<Void>,我不能像下面这样强制转换:

imageData = malloc(UInt(dataLength)) as UnsafeMutablePointer<PixelRGB> // 'Void' is not identical to `PixelRGB`

不管怎样解决这个问题?谢谢你的帮助!

我想你想说的是这样的:

imageData = UnsafeMutablePointer<PixelRGB>.alloc(dataLength)

您尝试过以下操作吗?

imageData = unsafeBitCast(malloc(UInt(dataLength)), UnsafeMutablePointer<PixelRGB>.self)

参考:使用Swift 的遗留C API