Swift泛型和CMutableVoidPointer [英] Swift generics and CMutableVoidPointer
本文介绍了Swift泛型和CMutableVoidPointer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的泛型类中,我现在有以下函数:
$ $ $ $ $ $ $ $ $ func writeHeader(buffer:CMutableVoidPointer){
var headerData = NSData(bytesNoCopy:buffer,length:sizeof(H))
self.fileHandle.writeData(headerData)
}
但是,正如您所看到的,这不是非常安全的。我试过这个,但它不能编译
func writeHeader(buffer:CMutablePointer< H>){
var headerData = NSData(bytesNoCopy:buffer,length:sizeof(H))
self.fileHandle.writeData(headerData)
}
任何想法?
更新
在第一句话中提到的泛型类,对不起,下次更具体。
class DataStore< H> {
.....
}
解决方案
func writeHeader< H>(buffer:CConstPointer< H>) {
let headerData = buffer.withUnsafePointer {
NSData(bytesNoCopy:$ 0,length:sizeof(H),freeWhenDone:false)
}
self.fileHandle。 writeData(headerData)
}
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> {
.....
}
解决方案
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)
}
这篇关于Swift泛型和CMutableVoidPointer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文