Ogni volta che carico l'applicazione si ferma come se avessi impostato un punto di interruzione su questa linea:AVAudioPlayer getta punto di interruzione in modalità debug
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
Non c'è nessun punto di interruzione sopra o qualsiasi posto vicino questa linea. Succede solo quando eseguo l'app in modalità di debug e niente si blocca dopo il breakpoint. L'app funziona come se nulla fosse successo quando faccio clic su "Continua l'esecuzione del programma".
Questo è il metodo loadData, che è chiamato 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 funzione loadData sembra funzionare bene. Il file mp3 richiesto viene caricato e riprodotto senza problemi dopo il breakpoint.
Hai idea di cosa sto facendo male?
MODIFICA: Ho eseguito un backtrace quando si ferma al punto di interruzione. Questo è stato l'output:
(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
"soluzione": Si scopre, se disattivo punto di interruzione eccezione per tutte le eccezioni e utilizzare solo punto di interruzione per le eccezioni Objective-C il problema scompare. Ma non risolve il problema che l'assegnazione di AVAudioPlayer genera un'eccezione C++.
ho avuto la stessa analisi dello stack. Disabilitare il punto di interruzione "Tutte le eccezioni" non ha funzionato per me. – makdad