Typecast UnsafeMutablePointer <Void> to UnsafeMutablePointer <#Struct type#>

Ben*_* Lu 9 swift

我在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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我希望为此指针malloc一些空间,但malloc返回UnsafeMutablePointer<Void>并且我不能像下面那样强制转换它:

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

无论如何要解决这个问题?谢谢您的帮助!

mat*_*att 19

我想你想说的是这样的:

imageData = UnsafeMutablePointer<PixelRGB>.alloc(dataLength)
Run Code Online (Sandbox Code Playgroud)