Chaque fois que je charge l'application, elle s'arrête comme si j'avais placé un point d'arrêt sur cette ligne :
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
Il n'y a pas de point d'arrêt au-dessus ou à proximité de cette ligne. Cela ne se produit que lorsque j'exécute l'application en mode débogage et rien ne se produit après le point d'arrêt. L'application fonctionne comme si rien ne s'était passé lorsque je clique sur "Continuer l'exécution du programme".
C'est la méthode loadData, qui est appelée avec initWithData
:
-(NSData*)loadData:(NSString*)fileName
{
NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
dataPath = [dataPath stringByStandardizingPath];
NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
return data;
}
La fonction loadData semble fonctionner correctement. Le fichier mp3 demandé est chargé et lu sans aucun problème après le point d'arrêt.
Vous avez une idée de ce que je fais de mal ?
EDIT : J'ai lancé un backtrace quand il s'arrête au point d'arrêt. Voici le résultat :
(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
"SOLUTION" : Il s'avère que si je désactive le point d'arrêt pour toutes les exceptions et n'utilise le point d'arrêt que pour les exceptions Objective-C, le problème disparaît. Mais cela ne résout pas le problème de l'allocation de l'AVAudioPlayer qui lève une exception C++.