ios - 如何返回 void 函数的值

标签 ios swift

我有一个计算麦克风输入的 fft 的函数。 目标是在我调用 run 函数时创建一个框架,我用所有波段生成了 float 组。

现在一切正常,但我不知道如何从 gotSomeAudio 函数返回运行函数中的数组。

非常感谢您的帮助

@objc
public class FFT:NSObject{


    var audioInput: TempiAudioInput!

    @objc
    public func run() -> Array<Float>{

        let audioInputCallback: TempiAudioInputCallback = { (numberOfFrames, timeStamp, inout samples: [Float]) -> Void in
            self.gotSomeAudio(numberOfFrames, timeStamp: timeStamp, samples: samples)
        }


        audioInput = TempiAudioInput(audioInputCallback: audioInputCallback, sampleRate: 44100, numberOfChannels: 1)
        audioInput.startRecording()

        // how can i return the Array from the gotSomeAudio function? 
        return xyz
    }




    @objc
    public func gotSomeAudio(numberOfFrames: Int, timeStamp: Double, samples: [Float]) -> Array<Float> {

        let fft = TempiFFT(withSize: numberOfFrames, sampleRate: 44100)

        // Setting a window type reduces errors
        fft.windowType = TempiFFTWindowType.hanning

        // Perform the FFT
        fft.fftForward(samples)

        // Map FFT data to logical bands. This gives 4 bands per octave across 7 octaves = 28 bands.
        //fft.calculateLogarithmicBands(minFrequency: 100, maxFrequency: 11025, bandsPerOctave: 4)
        //fft.calculateLinearBands(minFrequency: 0, maxFrequency: fft.nyquistFrequency, numberOfBands: Int(screenWidth))
        fft.calculateLogarithmicBands(minFrequency: 100, maxFrequency: 11025, bandsPerOctave: 4)

        // Process some data
        return fft.bandFrequencies

    }

}

最佳答案

您可以将其传递给回调函数:

public func run(complete: Array<Float> -> Void) {

    let audioInputCallback: TempiAudioInputCallback = { (numberOfFrames, timeStamp, inout samples: [Float]) -> Void in
        complete(self.gotSomeAudio(numberOfFrames, timeStamp: timeStamp, samples: samples))
    }

...

myInstance.run() { floatArray in
    // Use floatArray here.
}

关于ios - 如何返回 void 函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37961960/

相关文章:

ios - 解雇 Controller 后未调用委托(delegate)

swift - Swift 4 中的 HMAC SHA256

ios - 如何将回调从 TableView 传递到 TableView Cell?

ios - 在堆栈 View 之间设置间距

android - 压缩手机上的文件并将其上传到服务器?

ios - 如果标签重叠,应如何设置应截断哪个标签?

swift - 快速将 TableView 数据传递给 DetailViewController

ios - 将从 UIPicker 中选择的值分配给 Swift 中的 UITextField(以及如何显示和隐藏它)

ios - Flutter 'Error running pod install' 'Pods-Runner' 目标具有传递依赖

iOS 应用程序本地化,应用程序大小是否增加?