हर बार जब मैं अनुप्रयोग के रूप में अगर मैं इस लाइन पर एक ब्रेकपाइंट सेट किया था बंद हो जाता है लोड में ब्रेकप्वाइंट फेंकता है:AVAudioPlayer डिबग मोड
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 समारोह काम करने ठीक लग रहा है। अनुरोधित एमपी 3 फ़ाइल ब्रेकपॉइंट के बाद किसी भी समस्या के बिना लोड और खेला जाता है।
क्या आपको कोई विचार है कि मैं क्या गलत कर रहा हूं?
संपादित करें: ब्रेकपॉइंट पर बंद होने पर मैं बैकट्रैक चलाता हूं।
(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
"समाधान": यह आउटपुट था यह पता चला है, अगर मैं सभी अपवादों के लिए अपवाद ब्रेकप्वाइंट को अक्षम करें और केवल ऑब्जेक्टिव-सी अपवाद समस्या गायब हो जाता है के लिए ब्रेकप्वाइंट का उपयोग करें। लेकिन यह समस्या को हल नहीं करता है कि AVAudioPlayer का आवंटन C++ अपवाद फेंकता है।
मैं एक ही स्टैक ट्रेस किया था। "सभी अपवाद" ब्रेकपॉइंट को अक्षम करने से यह मेरे लिए नहीं हुआ। – makdad