Да, вам нужно распределить / освободить память. Здесь есть отличный ответ / пример, включая правильное управление памятью:
iPhone: инициализация и выпуск AudioBufferList
Что касается «когда», вы захотите не только освободить память, когда AudioManager будет выпущен, но также и когда значение вашего AudioBufferList когда-либо будет изменено. Например. Если указатель изначально ссылается на некоторый «экземпляр A» структуры AudioBufferList, и вы изменяете его так, чтобы он указывал на некоторый «экземпляр B» структуры AudioBufferList, то вы захотите освободить память для «экземпляра A», иначе может быть потеряно (И память просочится.)
Один важный момент, и, возможно, это тот, который вы знали, но случайно ошиблись: dealloc
не вызывается, когда release
отправляется объекту. Экземпляр NSObject освобождается только тогда, когда его счетчик хранения достиг нуля. Объект может иметь счет сохранения 2 , и после отправки [myObject release]
его счет хранения станет 1 . Но не будет отправлено сообщение dealloc
, поскольку это означает, что некоторый другой объект все еще «владеет» этим экземпляром и полагается, что объект останется выделенным и доступным.