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 开始,现在仍然可以使用此功能。
在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 开始,现在仍然可以使用此功能。