每次我打开它已经停止,就像我设置一个断点在这条线的应用: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功能似乎是工作的罚款。请求的mp3文件在断点后加载并播放,没有任何问题。
你知道我在做什么错吗?
编辑: 我跑了回溯,当它在断点处停止。这是输出:
(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
“解决方案”:事实证明,如果我禁用所有异常异常断点,并仅使用Objective-C的异常问题消失断点。但是它并不能解决AVAudioPlayer分配抛出C++异常的问题。
我有同样的堆栈跟踪。禁用“所有异常”断点使它不会发生在我身上。 – makdad 2012-04-25 07:55:45