2013-01-15 69 views
4

對我的iOS應用程序使用Audio Queue,我在iOS6.1上進行測試時遇到了一些問題,儘管它在iOS6上運行良好。iOS 6.1 AudioQueueStop,AudioQueueDispose錯誤

問題是AudioQueueStopAudioQueueDispose沒有立即返回,或有時他們崩潰。

像這樣:

if (_audioQueue) 
{ 
    auto err = AudioQueueStop(_audioQueue, true); // Some delay before return 
    for (int i = 0; i < kNumberAudioQueueBuffers; i++) { 
    AudioQueueFreeBuffer(_audioQueue, _audioQueueBuffer[i]); 
    }  
    err = AudioQueueDispose(_audioQueue, true); // This also has delay 
    _audioQueue = nil; 
} 

這不叫上主線程,但另一個線程,但其他東西,例如AudioQueueNewoutputAudioQueueStart還呼籲該線程。

其實我試圖運行一個簡單的應用程序,它使用AudioQueue作爲測試,在這種情況下它工作正常(在iOS6和6.1上)。因此,我的代碼中的其他部分可能會影響,但我無法弄清楚。

有沒有人有類似的問題,並希望修復?

+0

我有同樣的問題。在我的情況下,AudioQueueDispose根本不會返回。你有沒有向蘋果公司提交錯誤報告?請讓我知道,如果你知道這一點 – dariaa

+0

對不起,遲到的迴應。在我的情況下,問題是我註冊到AudioQueue的回調函數的時間。我使用互斥機制,並導致死鎖。但它並沒有發生在iOS6上。 – shingt

回答

0

我看到與AudioQueueSetProperty()和kAudioQueueProperty_MagicCookie類似的問題。我的應用程序每次崩潰這被稱爲,當它在iOS 6.0和更早版本上正常工作時。我在想蘋果在6.1中搞砸了音頻隊列的實現。