こんにちは、スタックオーバーフラワーです。私はセキュア トランスポートのラッパーを実装していますが、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 を data:UnsafeMutablePointer にコピーしようとしています。それ、どうやったら出来るの?
コンパイル エラー:
/Users/*/SecureTransportWrapper.swift:108:9: 静的メンバー 'alloc' はタイプ 'UnsafeMutablePointer' (別名 'UnsafeMutablePointer<()>') のインスタンスでは使用できません
ありがとうございます!
================
更新: sslReadCallback が行うべきことの API ドキュメントは次のとおりです。
connection: 接続参照。
data: 戻ったときに、コールバックは、接続から読み取ったデータでこの場所のメモリを上書きする必要があります。
dataLength: 入力では、データの長さをバイト単位で表す整数へのポインター。戻り時に、コールバックは実際に転送されたバイト数でその整数を上書きする必要があります。
ここから抜粋