Swift 3 - 将 AudioStreamBasicDescription 字段初始化为零

Swift 3 - Initialize AudioStreamBasicDescription fields to zero

在Objective-C中,您应该始终将新音频流基本描述结构的字段初始化为零,如下所示:

AudioStreamBasicDescription myAudioDataFormat = {0};

我目前在 Swift 3 工作,我想知道如何将新 AudioStreamBasicDescription 结构的字段初始化为零?

var asbd = AudioStreamBasicDescription()
asbd.mSampleRate = SAMPLE_RATE
asbd.mFormatID = kAudioFormatLinearPCM
asbd.mFormatFlags = kAudioFormatFlagIsBigEndian | kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked
asbd.mBitsPerChannel = 16
asbd.mChannelsPerFrame = 1
asbd.mFramesPerPacket = 1
asbd.mBytesPerFrame = 2
asbd.mBytesPerPacket = 2

我的第一行会将初始字段初始化为零吗?不然怎么可能?

我的第一行会将初始字段初始化为零吗?

是的。

如您所知,Swift 生成一个默认初始化程序,将所有字段作为 Swift 定义的结构的参数,该结构没有显式初始化程序定义。

并且在导入 C 结构时,Swift 生成另一个采用 () 的初始化程序。请参阅 old Xcode Release Notes 中的此部分:

  • Imported C structs now have a default initializer in Swift that initializes all of the struct's fields to zero.

从 Swift 1.2 开始,现在仍然可以使用此功能。