你好,stackoverflowers。我正在为安全传输实现一个包装器,但我坚持使用一些 C -> Swift 语法。
func sslReadCallback(connection: SSLConnectionRef,
data: UnsafeMutablePointer<Void>,
var dataLength: UnsafeMutablePointer<Int>) -> OSStatus
{
//let bytesRequested = dataLength.memory
let transportWrapper:SecureTransportWrapper = UnsafePointer(connection).memory
let bytesRead:NSData = transportWrapper.readFromConnectionFunc(transportWrapper.connection)
dataLength = UnsafeMutablePointer<Int>.alloc(1)
dataLength.initialize(bytesRead.length)
if (bytesRead.length == 0)
{
return OSStatus(errSSLClosedGraceful)
}
else
{
data.alloc(sizeof(bytesRead.length)) //<----compile error here
return noErr
}
}
我已经标记了编译错误的位置。我不怪它犯错,我在这里有点猜测:P。我正在尝试将 NSData 复制到数据:UnsafeMutablePointer。我怎么做?
编译错误:
/Users/*/SecureTransportWrapper.swift:108:9:静态成员“alloc”不能用于“UnsafeMutablePointer”类型的实例(又名“UnsafeMutablePointer<()>”)
万分感谢!
=================
更新:这里是 sslReadCallback 应该做什么的 api 文档:
连接:连接参考。
数据:返回时,您的回调应使用从连接中读取的数据覆盖此位置的内存。
dataLength:在输入时,指向表示数据长度的整数的指针(以字节为单位)。返回时,您的回调应该用实际传输的字节数覆盖该整数。
从这里摘录