从具有 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)