Uygulamayı her yüklediğimde, bu satırda bir kesme noktası ayarlamışım gibi duruyor:
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
Bu çizginin üstünde veya yakınında herhangi bir yer kesme noktası yok. Yalnızca uygulamayı hata ayıklama modunda çalıştırdığımda ve kesme noktasından sonra hiçbir şey çökmediğinde oluyor. "Program yürütmeye devam et" i tıkladığımda uygulama hiçbir şey olmamış gibi çalışıyor.
Bu, aşağıdakilerle çağrılan loadData yöntemidir initWithData
:
-(NSData*)loadData:(NSString*)fileName
{
NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
dataPath = [dataPath stringByStandardizingPath];
NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
return data;
}
LoadData işlevi iyi çalışıyor gibi görünüyor. İstenen mp3 dosyası, kesme noktasından sonra sorunsuz bir şekilde yüklenir ve oynatılır.
Neyi yanlış yaptığım hakkında bir fikrin var mı?
DÜZENLEME: Kesme noktasında durduğunda bir geri izleme çalıştırdım. Sonuç şuydu:
(lldb) bt * 1 numaralı iş parçacığı: tid = 0x1c03, 0x30df1724 libc ++ abi.dylib`__cxa_throw, durdurma nedeni = kesme noktası 1.2 çerçeve no 0: 0x30df1724 libc ++ abi.dylib`__cxa_throw çerçeve # 1: 0x36403a24 AudioToolbox`ID3ParserHandle :: ID3ParserHandle (void *, long (*) (void *, unsigned long, unsigned long, unsigned long, void **, unsigned long *)) + 452 çerçeve 2: 0x36403b0e AudioToolbox`ID3ParserOpen + 142 çerçeve 3: 0x3635bd16 AudioToolbox`MPEGAudioFile :: ParseID3Tags () + 58 çerçeve # 4: 0x3635b9aa AudioToolbox`MPEGAudioFile :: ParseAudioFile () + 26 çerçeve # 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 çerçeve 6: 0x36316480 AudioToolbox`AudioFileOpenWithCallbacks + 612 çerçeve # 7: 0x31f4c1ec AVFoundation`- [AVAudioPlayer initWithData: hata:] + 120
"ÇÖZÜM": Tüm istisnalar için istisna kesme noktasını devre dışı bırakırsam ve yalnızca Objective-C istisnaları için kesme noktası kullanırsam sorun ortadan kalkar. Ancak AVAudioPlayer tahsisinin bir C ++ istisnası atması sorununu çözmez.