Swift FFT 中的 constUnsafePointer 未解析标识符

constUnsafePointer unresolved identifier in Swift FFT

我一直在查看 Swift 中的 FFT 示例,使用 vDSP_ctozD 时它们似乎都有 ConstUnsafePointer,如下例所示:

import Foundation
import Accelerate

internal func spectrumForValues(signal: [Double]) -> [Double] {
// Find the largest power of two in our samples
let log2N = vDSP_Length(log2(Double(signal.count)))
let n = 1 << log2N
let fftLength = n / 2

// This is expensive; factor it out if you need to call this function a lot
let fftsetup = vDSP_create_fftsetupD(log2N, FFTRadix(kFFTRadix2))

var fft = [Double](count:Int(n), repeatedValue:0.0)

// Generate a split complex vector from the real data
var realp = [Double](count:Int(fftLength), repeatedValue:0.0)
var imagp = realp

withExtendedLifetimes(realp, imagp) {
    var splitComplex = DSPDoubleSplitComplex(realp:&realp, imagp:&imagp)

    // Take the fft
    vDSP_fft_zripD(fftsetup, &splitComplex, 1, log2N, FFTDirection(kFFTDirection_Forward))

    // Normalize
    var normFactor = 1.0 / Double(2 * n)
    vDSP_vsmulD(splitComplex.realp, 1, &normFactor, splitComplex.realp, 1, fftLength)
    vDSP_vsmulD(splitComplex.imagp, 1, &normFactor, splitComplex.imagp, 1, fftLength)

    // Zero out Nyquist
    splitComplex.imagp[0] = 0.0

    // Convert complex FFT to magnitude
    vDSP_zvmagsD(&splitComplex, 1, &fft, 1, fftLength)
}

// Cleanup
vDSP_destroy_fftsetupD(fftsetup)
return fft
}

// To get rid of the `() -> () in` casting
func withExtendedLifetime<T>(x: T, f: () -> ()) {
return Swift.withExtendedLifetime(x, f)
}

// In the spirit of withUnsafePointers
func withExtendedLifetimes<A0, A1>(arg0: A0, arg1: A1, f: () -> ()) {
return withExtendedLifetime(arg0) { withExtendedLifetime(arg1, f) }
}

然而,当我尝试在我的项目中使用它时,这个 ConstUnsafePointer 被视为未解析的标识符。任何线索如何解决这个问题?提前致谢。

ConstUnsafePointer 这个名字在去年夏天的早期 Swift 测试版中使用(当时,UnsafePointer 意味着可变)。现在,常量指针只是 UnsafePointer 而可变指针是 UnsafeMutablePointer.