2016-04-13 7 views
0

C işaretçisi ile ilgili bazı işlemleri Swift'e dönüştürüyorum. Realloc UnsafeMutablePointer in Swift neden hatası

var bits = UnsafeMutableBufferPointer<Int32>(start: nil, count: 0) 

var startIdx: UnsafeMutablePointer<Int32> = nil { 
    didSet { 
     bits = UnsafeMutableBufferPointer<Int32>(start: startIdx, count: bitsLength) 
     defer { bits.baseAddress.dealloc(bits.count) } 
    } 
} 

var size: Int = 0 
var bitsLength: Int = 1 

init(size: Int) { 
    self.size = size 
    self.bitsLength = (size + 31)/32 
    self.startIdx = UnsafeMutablePointer<Int32>.alloc(bitsLength * sizeof(Int32)) 
} 

func ensureCapacity(size: Int) { 
    if size > bitsLength * 32 { 
     let newBitsLength = (size + 31)/32 

     startIdx = realloc(startIdx, sizeof(Int32) * newBitsLength) 
     // Cannot convert value of type `UnsafeMutablePointer<Int32>` to type 'UnsafeMutablePointer<Void>'(aka `UnsafeMutablePointer<()>`) in coercion 
    } 
} 

Ben

herhangi bir fikir zorlama

içinde (aka UnsafeMutablePointer<()>) 'UnsafeMutablePointer' yazın tip UnsafeMutablePointer<Int32> bu

dönüştürülemez değeri var mı?

cevap

0

Olabilir bu yardım:

startIdx = unsafeBitCast(realloc(startIdx, sizeof(Int32) * newBitsLength), UnsafeMutablePointer<Int32>.self)