Cada vez que se carga la aplicación se detiene como si hubiera establecido un punto de interrupción en esta línea:AVAudioPlayer lanza punto de interrupción en modo de depuración
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
No hay punto de interrupción anteriormente o cualquier lugar cerca de esta línea. Solo sucede cuando ejecuto la aplicación en modo de depuración y nada falla después del punto de interrupción. La aplicación funciona como si nada hubiera sucedido cuando hago clic en "Continuar ejecución del programa".
Este es el método loadData, que se llama con initWithData
:
-(NSData*)loadData:(NSString*)fileName
{
NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
dataPath = [dataPath stringByStandardizingPath];
NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
return data;
}
La función loadData parece estar funcionando bien. El archivo mp3 solicitado se carga y reproduce sin problemas después del punto de interrupción.
¿Tiene alguna idea de lo que estoy haciendo mal?
EDIT: me pasó una traza inversa cuando se detiene en el punto de interrupción. Este fue el resultado:
(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
"solución": Resulta que, si inhabilito punto de interrupción de excepción para todas las excepciones y sólo utilizo punto de interrupción para las excepciones de Objective-C el problema desaparece. Pero no resuelve el problema de que la asignación de AVAudioPlayer arroja una excepción de C++.
que tenían la misma traza de la pila. Desactivar el punto de interrupción "Todas las excepciones" hizo que no sucediera para mí. – makdad