请帮助语法:
__weak typeof (self) weakSelf = self;
[self.audioFile getWaveformDataWithCompletionBlock:^(float **waveformData,
int length)
{
[weakSelf.audioPlot updateBuffer:waveformData[0]
withBufferSize:length];
}];
波形数据本身会是一个float数组组成的数组,每个 channel 一个,长度表示每个float数组的总长度。 @param waveformData float 组的数组,每个代表文件中音频数据的 channel @param length 一个int,代表每路float音频数据的长度
很快我有:
cell.audioFile.getWaveformDataWithCompletionBlock { (UnsafeMutablePointer<UnsafeMutablePointer<Float>>, Int32) -> Void
}
我坚持使用 UnsafeMutablePointer>
我需要使用这个参数。在:
cell.audioWaveView.updateBuffer(缓冲区:UnsafeMutablePointer,withBufferSize:Int32)
最佳答案
我知道这可能是一个老问题,但我也在为同样的事情苦苦挣扎,我终于解决了:
您需要将参数作为 WaveformDataCompletionBlock 闭包传递给 block ,并且您的参数应该是一个 UnsafeMutablePointer 和一个 UInt32。所以代码应该是这样的:
self.audioFile = EZAudioFile(URL: self.soundFileURL)
var waveClosure: WaveformDataCompletionBlock = {
(waveForData: UnsafeMutablePointer<Float>, length: UInt32) in
//Do something
}
self.audioFile.getWaveformDataWithCompletionBlock(waveClosure)
我希望这对某些人有用:)
关于objective-c - 如何用 arg 写 block 。 Swift 闭包中的 "UnsafeMutablePointer<UnsafeMutablePointer<Float>>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31305488/