2012-01-17 47 views
0

這是我的用於使用音頻隊列生成噪聲碼:音頻隊列和EXC_BAD_ACCESS

http://pastebin.com/Kn8GU72J

的問題是,我的代碼生成EXC_BAD_ACCESS。該問題似乎在分配

MAAudioManager *audioMngr = (__bridge MAAudioManager *) inUserData; 

在回調例程中。 我懷疑這可能與MAAudioManager類的線程訪問有關。

有什麼想法?

回答

1

程序中是否還有其他地方保留MAAudioManager實例?看起來在回調被調用的時候它已經被釋放了。

+0

你說得對。沒有ARC的同一個程序運行良好。看來ARC發佈了MAAudioManager實例。好的,我需要研究一下更好的ARC。同時,關於如何避免ARC釋放對象的想法?謝謝! – Carlo 2012-01-17 19:12:01

+0

您需要在某處保留一個指向MAAudioManager實例的指針。例如,您可以將其保存在創建它的對象的實例變量或應用程序委託中。 – joerick 2012-01-17 20:01:55

+0

用NSZombie進行調試也是一個好主意,你可以在'Scheme'對話框中做到這一點,該選項被稱爲「啓用殭屍對象」。通過這種方式,您將獲得更多信息,而不僅僅是EXC_BAD_ACCESS。 – joerick 2012-01-17 20:06:03

相關問題