108 votes

AVAudioPlayer lance un point d'arrêt en mode débogage

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++.

-4voto

redestructa Points 124

Essayez de définir l'AVAudioPlayer comme une variable de classe !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X