7892


Swift から AudioQueueGetProperty を呼び出すとコンパイルエラーになってしまいます。  
エラーは下記のようになっています。

> Cannot invoke 'init' with an argument list of type '(AudioQueueRef, $T3,
> $T7, $T11)'

問題のコード

[code]

    var levelMeter = AudioQueueLevelMeterState(mAveragePower: 0, mPeakPower: 0)
    let levelMeterSize = UInt32(sizeof(AudioQueueLevelMeterState))
    // self.queue には AudioQueueRef が入っている
    if let q = self.queue{
        AudioQueueGetProperty(
            q,
            UInt32(kAudioQueueProperty_CurrentLevelMeterDB),
            UnsafePointer(levelMeter ),
            UnsafePointer(levelMeterSize))
    }
    
[/code]

呼び出し方が悪いのだと思いますが、どこが悪いか教えて頂けるでしょうか？


CC BY-SA 3.0
2015-03-13T07:49:25.887
7874
2015-03-13T15:34:10.777
2015-03-13T07:59:39.547
8329
8329
question
objective-c swift xcode
AudioQueueGetProperty を呼び出すと Cannot invoke 'init' with an argument list of type


以下の変更でコンパイルが通るようになるところまでは確認しました。  
（Xcode 6.2を使用）

[code]

        var levelMeter = AudioQueueLevelMeterState(mAveragePower: 0, mPeakPower: 0)
    
        // ※varに変更
        var levelMeterSize = UInt32(sizeof(AudioQueueLevelMeterState))
    
        // self.queue には AudioQueueRef が入っている
        if let q = self.queue {
            let id = UInt32(kAudioQueueProperty_CurrentLevelMeterDB)
    
            // ※inout系の引数を『&』で呼び出すように変更
            AudioQueueGetProperty(q, id, &levelMeter, &levelMeterSize)
        }
    
[/code]


CC BY-SA 3.0
2015-03-13T15:34:10.777
7892
2015-03-13T15:34:10.777
7459
7874
answer