Swift generics and CMutableVoidPointer

一曲冷凌霜 提交于 2019-12-07 18:56:39

问题


I have the following function at the moment in my generic class

func writeHeader(buffer: CMutableVoidPointer) {

    var headerData = NSData(bytesNoCopy:buffer, length:sizeof(H))
    self.fileHandle.writeData(headerData)
}

But as you see this is not very type safe. I tried this but it does not compile

func writeHeader(buffer: CMutablePointer<H>) {

    var headerData = NSData(bytesNoCopy:buffer, length:sizeof(H))
    self.fileHandle.writeData(headerData)
}

Any idea?

UPDATE

This is part of a generic class as mentioned in the first sentence, sorry next time im more specific.

class DataStore<H> { 
     .....
}

回答1:


This might be what you are looking for:

func writeHeader<H>(buffer: CConstPointer<H>) {

    let headerData = buffer.withUnsafePointer {
       NSData(bytesNoCopy: $0, length: sizeof(H), freeWhenDone: false)
    }
    self.fileHandle.writeData(headerData)
}


来源:https://stackoverflow.com/questions/24470764/swift-generics-and-cmutablevoidpointer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!