在 Swift 3 中,我需要将数据发送到接受float **
输入的 C 对象。
在 Swift 2 中,我曾经声明 a UnsafeMutablePointer< UnsafeMutablePointer<Float32>>
,构造一个 swift Array(仅用于 init!),然后将其传递给指针,并且它起作用了:
var bufferOut: UnsafeMutablePointer< UnsafeMutablePointer<Float32>>?
arrayOut = Array(repeating: Array(repeating: 0, count: Int(size1), count: Int(size2))
bufferOut = UnsafeMutablePointer< UnsafeMutablePointer<Float32>>(arrayOut)
现在在 Swift 3 中这一切都被打破了!
float**
传递 C 样式并初始化它的最快捷方式是什么?- 在 a 中分配值的最佳方法是
UnsafeMutablePointer< UnsafeMutablePointer<T>>
什么?
文档说T **
应该使用AutoreleasingUnsafeMutablePointer<T>
,但我实际上从未设法构建一个!
请注意,我实际上并不关心上面示例中的数组!如果我可以直接使用已知容量初始化指针,我会的。
注意:UnsafeRawPointer 的预期用例部分描述了有用的情况,例如 C 数组和 C 缓冲区,但是为上述构造转换这些方法并不明显!