【问题标题】:Creating an UnsafeMutablePointer<UnsafeMutablePointer<Float>> parameter in Swift 3在 Swift 3 中创建 UnsafeMutablePointer<UnsafeMutablePointer<Float>> 参数
【发布时间】:2016-09-11 22:39:40
【问题描述】:

Accelerate框架vDSP_biquadm()函数的Swift签名包括UnsafeMutablePointer&lt;UnsafePointer&lt;Float&gt;&gt;UnsafeMutablePointer&lt;UnsafeMutablePointer&lt;Float&gt;&gt;的参数类型。

如何在 Swift 3 中声明和创建此类类型,然后使用对多个 [Float] 类型的 Swift 数组的引用填充这些指针数组。

【问题讨论】:

    标签: swift signal-processing


    【解决方案1】:

    当您需要为UnsafeMutablePointer&lt;T&gt; 参数传递多个值时,您需要声明一个[T](又名Array&lt;T&gt;)类型的变量并将其作为inout 参数传递。在您的情况下,TUnsafeMutablePointer&lt;Float&gt;

    所以,如果你想以[Float] 开头,你可能需要这样写:

    let input: [Float] = [/*...*/]
    var output: [Float] = Array(repeating: 0, count: outputTotalSize)
    input.withUnsafeBufferPointer {inBuf in
        let inputPtr = inBuf.baseAddress!
        output.withUnsafeMutableBufferPointer {outBuf in
            let outputPtr = outBuf.baseAddress!
            var pInputs: [UnsafePointer<Float>] = [inputPtr,/*...*/]
            var pOutputs: [UnsafeMutablePointer<Float>] = [outputPtr/*...*/]
            vDSP_biquadm(setup, &pInputs, inStride, &pOutputs, outStride, length)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多