インターフェイスを持つCメソッドがあります
size_t foo(uint8_t ** output)
これはSwiftに次のようにインポートされます
func foo(_ output: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>>) -> Int
このメソッドを Swift から呼び出すにはどうすればよいですか?
インターフェイスを持つCメソッドがあります
size_t foo(uint8_t ** output)
これはSwiftに次のようにインポートされます
func foo(_ output: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>>) -> Int
このメソッドを Swift から呼び出すにはどうすればよいですか?
が配列を割り当て、が指すメモリ位置にアドレスを置き、foo()
割り当てられた配列のサイズを返すと仮定すると、このように Swift から使用できます。uint8_t
output
var output : UnsafeMutablePointer<UInt8> = nil
let size = foo(&output)
for i in 0 ..< size {
println(output[i])
}
また、割り当てられたメモリを解放する責任者を決定する必要があります。foo()
関数がそれを使用して割り当てる
場合はmalloc()
、Swift から解放できます。
free(output)