1

インターフェイスを持つCメソッドがあります

size_t foo(uint8_t ** output)

これはSwiftに次のようにインポートされます

func foo(_ output: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>>) -> Int

このメソッドを Swift から呼び出すにはどうすればよいですか?

4

1 に答える 1

1

が配列を割り当て、が指すメモリ位置にアドレスを置き、foo()割り当てられた配列のサイズを返すと仮定すると、このように Swift から使用できます。uint8_toutput

var output : UnsafeMutablePointer<UInt8> = nil
let size = foo(&output)
for i in 0 ..< size {
    println(output[i])
}

また、割り当てられたメモリを解放する責任者を決定する必要があります。foo()関数がそれを使用して割り当てる 場合はmalloc()、Swift から解放できます。

free(output)
于 2015-05-15T08:20:41.030 に答える