在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
我的第一行会将初始字段初始化为零吗?否则怎么可以实现?
答案 0 :(得分:1)
我的第一行是否会将初始字段初始化为零?
YES。
如您所知,Swift生成一个默认初始化程序,将所有字段作为Swift定义结构的参数,没有明确的初始化程序定义。
当导入C-structs时,Swift会生成另一个使用()
的初始值设定项。请参阅old Xcode Release Notes:
- 导入的C结构现在在Swift中有一个默认的初始值设定项,它将所有结构的字段初始化为零。
从Swift 1.2开始,现在仍然可以使用此功能。