2014-09-24 10 views
8

ich eine Struktur in Swift erstellt genannt RGB, einfach genug:Typecast UnsafeMutablePointer <Void> zu UnsafeMutablePointer <#Struct Typ #>

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 
    } 
} 

Und ich habe einen Zeiger var imageData: UnsafeMutablePointer<PixelRGB>!.

Ich möchte etwas Platz für diesen Zeiger auf malloc, aber malloc kehrt UnsafeMutablePointer<Void> und ich kann es nicht wie unten Stimmen:

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

Wie dem auch sei, diese zu lösen? Danke für Ihre Hilfe!

+2

Wie wäre es 'imagedata = UnsafeMutablePointer .alloc (dataLength)'? – matt

+0

@matt Dies sollte eine Antwort sein. –

+0

Okey-dokey, wird tun. – matt

Antwort

19

denke ich, was Sie wollen, so etwas zu sagen ist:

imageData = UnsafeMutablePointer<PixelRGB>.alloc(dataLength) 
+0

Und wie kann man es befreien? –

+0

@AntonHolmquist imageData.destroy() –

+0

@AntonHolmquist Das Gegenteil von alloc() ist dealloc(). Die Methode destroy() ist das Gegenstück zu initialize(). – eofster

Verwandte Themen