swift3中UnsafeMutablePointer中的错误

萨钦

我的孩子看起来像这样

let samples = UnsafeMutableBufferPointer<Int16>(start:UnsafeMutablePointer(buffer.mData), count: Int(buffer.mDataByteSize)/sizeof(Int16))

在运行此代码时,会产生以下错误

Cannot invoke initializer for type 'UnsafeMutablePointer<_>' with an argument list of type '(UnsafeMutableRawPointer?)'

buffer.mdata具有原始数据。我该如何解决这个问题。提前致谢

马丁·R

假设这bufferAudioBuffer来自AVFoundationframework的:buffer.mData是“可选的原始指针” UnsafeMutableRawPointer?,并且在Swift 3中,您必须原始指针绑定到类型化的指针:

let buffer: AudioBuffer = ...

if let mData = buffer.mData {
    let numSamples = Int(buffer.mDataByteSize)/MemoryLayout<Int16>.size
    let samples = UnsafeMutableBufferPointer(start: mData.bindMemory(to: Int16.self, capacity: numSamples),
                                             count: numSamples)
    // ...
}

有关原始指针的更多信息,请参见SE-0107 UnsafeRawPointer API

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章