Проблема здесь заключается в том, что вы не выпускаете контроллер вида.Подумайте о том, что на самом деле происходит в вашем коде по адресу:
[self.radarViewController.view removeFromSuperview];
Вы удаляете представление из его суперпредставления.Контроллер представления все еще существует, и он контролирует то, что должно отображаться на виде, и в вашем случае, по-видимому, воспроизводит звук.
Проще говоря: контроллер представления - это объект.У него есть ребенок, вид.Это еще один объект.Вы удаляете представление из другого представления, но объект, управляющий удаленным представлением, все еще живет (и фактически, так же, как и объект представления).
Если вы хотите уничтожить весь контроллер представления, вызовите это после удаления представленияиз его суперпредставления:
[self.radarViewController release];
Или, если представление является сохраняемым свойством (что я предполагаю, глядя на ваш код), вы также можете использовать:
self.radarViewContoller = nil;
, который автоматически отключается для вас в синтезированном сеттере.
Когда контроллер представления освобождается, его счетчик ссылок вычитается на единицу.Если счетчик ссылок достигнет нуля, контроллер будет освобожден.