0
這是我的用於使用音頻隊列生成噪聲碼:音頻隊列和EXC_BAD_ACCESS
的問題是,我的代碼生成EXC_BAD_ACCESS。該問題似乎在分配
MAAudioManager *audioMngr = (__bridge MAAudioManager *) inUserData;
在回調例程中。 我懷疑這可能與MAAudioManager類的線程訪問有關。
有什麼想法?
這是我的用於使用音頻隊列生成噪聲碼:音頻隊列和EXC_BAD_ACCESS
的問題是,我的代碼生成EXC_BAD_ACCESS。該問題似乎在分配
MAAudioManager *audioMngr = (__bridge MAAudioManager *) inUserData;
在回調例程中。 我懷疑這可能與MAAudioManager類的線程訪問有關。
有什麼想法?
程序中是否還有其他地方保留MAAudioManager
實例?看起來在回調被調用的時候它已經被釋放了。
你說得對。沒有ARC的同一個程序運行良好。看來ARC發佈了MAAudioManager實例。好的,我需要研究一下更好的ARC。同時,關於如何避免ARC釋放對象的想法?謝謝! – Carlo 2012-01-17 19:12:01
您需要在某處保留一個指向MAAudioManager實例的指針。例如,您可以將其保存在創建它的對象的實例變量或應用程序委託中。 – joerick 2012-01-17 20:01:55
用NSZombie進行調試也是一個好主意,你可以在'Scheme'對話框中做到這一點,該選項被稱爲「啓用殭屍對象」。通過這種方式,您將獲得更多信息,而不僅僅是EXC_BAD_ACCESS。 – joerick 2012-01-17 20:06:03