Nit*_*tay 3 c pointers swift swift3
我在c中有一个函数,该函数接收预分配的字符串并用数据填充它-我想从swift调用此函数。我已经找到了许多有关如何将字符串从swift传递到c的示例,但是没有发现任何示例显示将数据写在预分配的字符串上的c函数。
c函数:
int GetData(char *dataJson, int maxSize);
Run Code Online (Sandbox Code Playgroud)
从另一方面说,这段代码可以编译,但是我找不到如何进行预分配的方法 dataBuffer
let dataBuffer = UnsafePointer<UInt8>
GetData(dataBuffer, 2048)
Run Code Online (Sandbox Code Playgroud)
在Swift中有办法吗?
一种简单的方法是使用,将数组作为inout表达式传递&,这将使用指向连续元素存储的指针来调用该函数:
var dataBuffer = Array<Int8>(repeating: 0, count: 2048)
let result = GetData(&dataBuffer, numericCast(dataBuffer.count))
Run Code Online (Sandbox Code Playgroud)
优点是您不必手动管理内存,dataBuffer超出范围时会自动释放。