dma*_*200 2 sizeof audiobuffer swift
我正在尝试实现从苹果 WWDC 视频中获得的这段代码。但是视频是 2016 年的,我认为语法已经改变。我如何调用 sizeof(Float)?这会产生错误。
func render(buffer:AudioBuffer){
let nFrames = Int(buffer.mDataByteSize) / sizeof(Float)
var ptr = UnsafeMutableRawPointer(buffer.mData)
var j = self.counter
let cycleLength = self.sampleRate / self.frequency
let halfCycleLength = cycleLength / 2
let amp = self.amplitude, minusAmp = -amp
for _ in 0..<nFrames{
if j < halfCycleLength{
ptr.pointee = amp
} else {
ptr.pointee = minusAmp
}
ptr = ptr.successor()
j += 1.0
if j > cycleLength {
}
}
self.counter = j
}
Run Code Online (Sandbox Code Playgroud)
sizeof()Swift 不再支持该函数。
利奥Dabus在他的评论中说,你想MemoryLayout<Type>.size,或者你的情况,MemoryLayout<Float>.size。
请注意,它告诉您该类型项目的抽象大小。但是,由于对齐,您不应假设包含不同类型项的结构将是其他元素大小的总和。此外,您还需要考虑运行它的设备。在 64 位设备上, Int 是 8 个字节。在 32 位设备上,它是 4 个字节。
有关更多信息,请参阅SwiftDoc.org 上关于MemoryLayout的文章。
| 归档时间: |
|
| 查看次数: |
4444 次 |
| 最近记录: |