ทุกครั้งที่ฉันโหลดแอพมันจะหยุดราวกับว่าฉันตั้งเบรกพอยต์ไว้ในบรรทัดนี้:
self.audioPlayer =
[[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName]
error:&outError] autorelease];
ไม่มีจุดพักด้านบนหรือที่ใด ๆ ใกล้กับเส้นนี้ จะเกิดขึ้นเฉพาะเมื่อฉันเรียกใช้แอปในโหมดดีบักและไม่มีอะไรขัดข้องหลังจากเบรกพอยต์ แอปทำงานเหมือนไม่มีอะไรเกิดขึ้นเมื่อฉันคลิก "ดำเนินการโปรแกรมต่อ"
นี่คือเมธอด loadData ซึ่งเรียกด้วยinitWithData
:
-(NSData*)loadData:(NSString*)fileName
{
NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
dataPath = [dataPath stringByStandardizingPath];
NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
return data;
}
ดูเหมือนว่าฟังก์ชัน loadData จะทำงานได้ดี ไฟล์ mp3 ที่ร้องขอจะถูกโหลดและเล่นโดยไม่มีปัญหาใด ๆ หลังจากเบรกพอยต์
คุณรู้ไหมว่าฉันทำอะไรผิด?
แก้ไข: ฉันวิ่งถอยหลังเมื่อหยุดที่จุดพัก นี่คือผลลัพธ์:
(lldb) bt * เธรด # 1: tid = 0x1c03, 0x30df1724 libc ++ abi.dylib`__cxa_throw เหตุผลหยุด = เบรกพอยต์ 1.2 เฟรม # 0: 0x30df1724 libc ++ abi.dylib`__cxa_throw เฟรม # 1: 0x36403a24 AudioToolbox`ID3ParserHandle :: ID3ParserHandle (โมฆะ * ยาว (*) (โมฆะ * ยาวไม่ได้ลงนามยาวไม่ได้ลงนามยาวไม่ได้ลงนามเป็นโมฆะ ** ยาวไม่ได้ลงชื่อ *)) + 452 เฟรม # 2: 0x36403b0e AudioToolbox`ID3ParserOpen + 142 เฟรม # 3: 0x3635bd16 AudioToolbox`MPEGAudioFile :: ParseID3Tags () + 58 เฟรม # 4: 0x3635b9aa AudioToolbox`MPEGAudioFile :: ParseAudioFile () + 26 เฟรม # 5: 0x3631723e AudioToolbox`AudioFileObject :: DoOpenWithCallbacks (void *, long (*) (void *, long long, unsigned long, void *, unsigned long *), long (*) (void *, long long, unsigned long , โมฆะ const *, ไม่ได้ลงนาม long *), long long (*) (void *), long (*) (void *, long long)) + 166 เฟรม # 6: 0x36316480 AudioToolbox`AudioFileOpenWithCallbacks + 612 เฟรม # 7: 0x31f4c1ec AVFoundation`- [AVAudioPlayer initWithData: ข้อผิดพลาด:] + 120
"วิธีแก้ปัญหา":ปรากฎว่าถ้าฉันปิดใช้เบรกพอยต์ข้อยกเว้นสำหรับข้อยกเว้นทั้งหมดและใช้เบรกพอยต์สำหรับ Objective-C เท่านั้นปัญหาจะหายไป แต่ไม่ได้แก้ปัญหาที่การจัดสรร AVAudioPlayer ทำให้เกิดข้อยกเว้น C ++