Каждый раз, когда я загрузить приложение он останавливается, как если бы я поставил точку останова на этой линии:AVAudioPlayer бросает точку останова в режиме отладки
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
Там нет точки останова выше или любого места вблизи этой линии. Это происходит только тогда, когда я запускаю приложение в режиме отладки и ничто не падает после точки останова. Приложение работает, поскольку ничего не произошло, когда я нажимаю «Продолжить выполнение программы».
Это метод LoadData, который вызывается с initWithData
:
-(NSData*)loadData:(NSString*)fileName
{
NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
dataPath = [dataPath stringByStandardizingPath];
NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
return data;
}
Функция LoadData, кажется, работает хорошо. Запрашиваемый mp3-файл загружается и воспроизводится без проблем после точки останова.
Вы хоть представляете, что я делаю неправильно?
EDIT: Я побежал назад, когда он остановился у точки останова. Это был выход:
(lldb) bt * thread #1: tid = 0x1c03, 0x30df1724 libc++abi.dylib`__cxa_throw, stop reason = breakpoint 1.2 frame #0: 0x30df1724 libc++abi.dylib`__cxa_throw frame #1: 0x36403a24 AudioToolbox`ID3ParserHandle::ID3ParserHandle(void*, long (*)(void*, unsigned long, unsigned long, unsigned long, void**, unsigned long*)) + 452 frame #2: 0x36403b0e AudioToolbox`ID3ParserOpen + 142 frame #3: 0x3635bd16 AudioToolbox`MPEGAudioFile::ParseID3Tags() + 58 frame #4: 0x3635b9aa AudioToolbox`MPEGAudioFile::ParseAudioFile() + 26 frame #5: 0x3631723e AudioToolbox`AudioFileObject::DoOpenWithCallbacks(void*, long (*)(void*, long long, unsigned long, void*, unsigned long*), long (*)(void*, long long, unsigned long, void const*, unsigned long*), long long (*)(void*), long (*)(void*, long long)) + 166 frame #6: 0x36316480 AudioToolbox`AudioFileOpenWithCallbacks + 612 frame #7: 0x31f4c1ec AVFoundation`-[AVAudioPlayer initWithData:error:] + 120
«РЕШЕНИЕ»: Оказывается, если отключить исключение точки останова для всех исключений и использовать только точки останова для исключения Objective-C проблема исчезает. Но это не решает проблему, что выделение AVAudioPlayer вызывает исключение C++.
Я была такая же трассировка стеки. Отключение контрольной точки «Все исключения» заставило меня не случиться. – makdad