如何在 Swift 4 中使用 sizeof() 方法

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)

Dun*_*n C 9

sizeof()Swift 不再支持该函数。

利奥Dabus在他的评论中说,你想MemoryLayout<Type>.size,或者你的情况,MemoryLayout<Float>.size

请注意,它告诉您该类型项目的抽象大小。但是,由于对齐,您不应假设包含不同类型项的结构将是其他元素大小的总和。此外,您还需要考虑运行它的设备。在 64 位设备上, Int 是 8 个字节。在 32 位设备上,它是 4 个字节。

有关更多信息,请参阅SwiftDoc.org 上关于MemoryLayout的文章。