我的孩子看起来像这样
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具有原始数据。我该如何解决这个问题。提前致谢
假设这buffer
是AudioBuffer
来自AVFoundation
framework的: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] 删除。
我来说两句