2017-03-02 4 views
1

にAudioStreamBasicDescriptionフィールドを初期化します。スウィフト3 - このように、あなたは常にゼロに新たなオーディオストリーム基本記述構造体のフィールドを初期化する必要があるのObjective-Cでゼロ

AudioStreamBasicDescription myAudioDataFormat = {0}; 

私は現在スウィフトで働いています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に初期化しますか?そうでなければどのように達成可能ですか?

答えて

2

私の最初の行は最初のフィールドを0に初期化しますか?

はい。

あなたが知っているように、Swiftは明示的な初期化子定義を持たないSwift定義の構造体のパラメータとしてすべてのフィールドを取るデフォルトの初期化子を生成します。

C構造体をインポートするとき、Swiftは()を取る別の初期化子を生成します。 old Xcode Release Notesでこの部分を参照してください:

  • インポートCの構造体は現在ゼロに構造体のすべてのフィールドを初期化しスウィフトのデフォルトの初期化子を持っています。

スウィフト1.2以降、この機能が利用可能です。

+0

すばやく簡単な答えをありがとう! – Herickson

関連する問題