Вызов inputNode AVAudioEngine вызывает ошибку

Я разрабатываю простое настольное приложение, которое одновременно воспроизводит и записывает звук. Все шло хорошо, пока я каким-то образом не доработал ошибку - теперь каждый раз, когда я пытаюсь вызвать AVAudioEngine's inputNode или mainMixer, выдает ошибку.

У меня есть свойство @property (nonatomic, readonly) AVAudioEngine *engine; в моем заголовке, а в моей реализации метода init следующий код, который вызывает вызов inputNode:

if (self = [super init]) {
   _engine = [[AVAudioEngine alloc] init];

   AVAudioInputNode *node = [_engine inputNode];
}
return self;

Установка точки останова для всех исключений приводит к тому, что вершина стека вызовов выглядит следующим образом:

#0  0x00007fff8ba19ab7 in __cxa_throw ()
#1  0x0000000108123779 in AUHAL::GetAudioChannelLayout(unsigned int, unsigned int, AudioChannelLayout*, unsigned char&) ()
#2  0x00000001081183c6 in AUBase::DispatchGetPropertyInfo(unsigned int, unsigned int, unsigned int, unsigned int&, unsigned char&) ()
#3  0x00000001081cdf66 in AUMethodGetPropertyInfo(void*, unsigned int, unsigned int, unsigned int, unsigned int*, unsigned char*) ()

Раньше у меня это работало, поэтому я предполагаю, что забыл что-то очевидное?


person Benjineer    schedule 12.03.2015    source источник


Ответы (1)


Итак, по какой-то причине удаление точки останова All Exceptions решило проблему.

Либо есть ошибка в XCode или AVFoundation, либо я не знаю, как правильно использовать XCode.

person Benjineer    schedule 13.03.2015
comment
И вроде бы 6.3 тоже. - person mahboudz; 21.04.2015
comment
FWIW, поскольку выбрасываемое исключение является исключением C++, вы можете изменить точку останова All Exceptions на All Objective-C Exceptions, если вам все еще нужны исключения Objective-C (для этого щелкните правой кнопкой мыши точку останова All Exceptions и выберите Edit Breakpoint, затем измените Exception на Objective-C вместо All). - person Ryan; 26.06.2015
comment
Я получаю эту ошибку, но удаление точки останова просто означает, что я не слышу звук :( - person Ash; 29.01.2018
comment
@ash - я не смотрел на это целую вечность, но, возможно, попробуйте добавить sleep или сделать что-то еще, чтобы программа не завершила работу. - person Benjineer; 31.01.2018
comment
Спасибо, но оказалось, что моя проблема была совершенно не связана. Кажется, что загрузка звуков с помощью AVAudioSource(named:) не работает для загрузки звуков из каталога активов в Mac OS — по крайней мере, насколько я мог видеть — поэтому я переместил свои звуковые файлы в комплект приложения и вместо этого использовал AVAudioSource(fileNamed:), и это решило проблему. проблема. Было бы полезно, если бы сбойный метод возвращал nil или выдавал ошибку, но код не испортился намного позже, поэтому было трудно диагностировать проблему. - person Ash; 31.01.2018