objective-c - 如何用 arg 写 block 。 Swift 闭包中的 "UnsafeMutablePointer<UnsafeMutablePointer<Float>>"

标签 objective-c swift

请帮助语法:

__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/

相关文章:

swift - swift UIViewController 子类中的非可选 var

iphone - 带有@selector 和动态方法的动态 UIMenuItems

ios - 尝试设置非属性列表对象

objective-c - [super init]返回nil怎么办?

ios - SWIFT:很难在 tableView 中显示数据

ios - 无法在 iOS Swift 中导入 UserNotifications

objective-c - 通过 Objective-C 查询存储在网络服务器上的 SQLite 数据库?

iphone - 将随机图像放在uibutton上

ios - UISearchController 仅在单击搜索按钮时更新

SwiftUI/组合 : subscribe to value change of @Binding