2014-09-24 16 views
8

Tôi tạo ra một cấu trúc trong Swift gọi là RGB, đủ đơn giản:định kiểu UnsafeMutablePointer <Void> để UnsafeMutablePointer <#Struct loại #>

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

Và tôi có một con trỏ var imageData: UnsafeMutablePointer<PixelRGB>!.

Tôi muốn malloc một số không gian cho con trỏ này, nhưng malloc lợi nhuận UnsafeMutablePointer<Void> và tôi không thể cast nó như dưới đây:

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

Dù sao để giải quyết này? Cảm ơn sự giúp đỡ của bạn!

+2

Làm thế nào về 'imageData = UnsafeMutablePointer .alloc (dataLength) '? – matt

+0

@matt Đây phải là câu trả lời. –

+0

Okey-dokey, sẽ thực hiện. – matt

Trả lời

19

Tôi nghĩ rằng những gì bạn muốn nói là một cái gì đó như thế này:

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

Và làm thế nào để giải phóng nó? –

+0

@AntonHolmquist imageData.destroy() –

+0

@AntonHolmquist Đối diện của alloc() là dealloc(). Phương thức destroy() là đối tác khởi tạo(). – eofster

Các vấn đề liên quan