Setiap kali saya memuat aplikasi itu berhenti seolah-olah saya telah menetapkan breakpoint pada baris ini:
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
Tidak ada breakpoint di atas atau di mana pun di dekat garis ini. Itu hanya terjadi ketika saya menjalankan aplikasi dalam mode debug dan tidak ada yang mogok setelah breakpoint. Aplikasi ini berfungsi karena tidak ada yang terjadi saat saya mengklik "Lanjutkan eksekusi program".
Ini adalah metode loadData, yang dipanggil dengan initWithData
:
-(NSData*)loadData:(NSString*)fileName
{
NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
dataPath = [dataPath stringByStandardizingPath];
NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
return data;
}
Fungsi loadData tampaknya berfungsi dengan baik. File mp3 yang diminta dimuat dan diputar tanpa masalah setelah breakpoint.
Apakah Anda tahu apa yang saya lakukan salah?
EDIT: Saya menjalankan backtrace ketika berhenti di breakpoint. Ini adalah hasilnya:
(lldb) bt * utas # 1: tid = 0x1c03, 0x30df1724 libc ++ abi.dylib`__cxa_throw, alasan berhenti = breakpoint 1.2 bingkai # 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 bingkai # 2: 0x36403b0e AudioToolbox`ID3ParserOpen + 142 bingkai # 3: 0x3635bd16 AudioToolbox`MPEGAudioFile :: ParseID3Tags () + 58 bingkai # 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 bingkai # 6: 0x36316480 AudioToolbox`AudioFileOpenWithCallbacks + 612 bingkai # 7: 0x31f4c1ec AVFoundation`- [AVAudioPlayer initWithData: error:] + 120
"SOLUSI": Ternyata, jika saya menonaktifkan breakpoint pengecualian untuk semua pengecualian dan hanya menggunakan breakpoint untuk pengecualian Objective-C, masalahnya akan hilang. Tapi itu tidak menyelesaikan masalah alokasi AVAudioPlayer memunculkan pengecualian C ++.