从具有 uint8_t ** 作为输出参数的 Swift 调用本机方法
Call native method from Swift that has uint8_t ** as output parameter
我有一个带有接口的 C 方法
size_t foo(uint8_t ** output)
这将作为
导入到Swift
func foo(_ output: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>>) -> Int
如何从 Swift 调用此方法?
假设foo()
分配一个uint8_t
数组,把地址
到 output
指向的内存位置,并且 returns
分配数组的大小,你可以使用它
来自 Swift 这样的
var output : UnsafeMutablePointer<UInt8> = nil
let size = foo(&output)
for i in 0 ..< size {
println(output[i])
}
您还必须决定谁负责发布
分配的内存。如果 foo()
函数使用
malloc()
然后你可以用
从 Swift 释放它
free(output)
我有一个带有接口的 C 方法
size_t foo(uint8_t ** output)
这将作为
导入到Swiftfunc foo(_ output: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>>) -> Int
如何从 Swift 调用此方法?
假设foo()
分配一个uint8_t
数组,把地址
到 output
指向的内存位置,并且 returns
分配数组的大小,你可以使用它
来自 Swift 这样的
var output : UnsafeMutablePointer<UInt8> = nil
let size = foo(&output)
for i in 0 ..< size {
println(output[i])
}
您还必须决定谁负责发布
分配的内存。如果 foo()
函数使用
malloc()
然后你可以用
free(output)