首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AVAudioPlayer在调试模式下抛出断点

AVAudioPlayer在调试模式下抛出断点
EN

Stack Overflow用户
提问于 2018-04-16 07:05:53
回答 2查看 0关注 0票数 0

每当我加载应用程序,它停止,就好像我已经在这一行上设置了一个断点:

代码语言:javascript
复制
self.audioPlayer = 
 [[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName] 
                                error:&outError] autorelease];

这条线附近没有任何断点或任何地方。它只发生在我以调试模式运行应用程序并且在断点后没有崩溃。当我点击“继续执行程序”时,该应用程序没有任何反应。

这是loadData方法,它在以下位置调用initWithData

代码语言:javascript
复制
-(NSData*)loadData:(NSString*)fileName
{
    NSString *dataPath = [self.path stringByAppendingPathComponent:fileName];
    dataPath = [dataPath stringByStandardizingPath];
    NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ];
    return data;
}

loadData函数似乎工作正常。请求的mp3文件在断点后加载并播放,没有任何问题。

你有什么想法我做错了吗?

当它停在断点时我跑了一个回溯。这是输出:

代码语言:javascript
复制
(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
    帧#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
    帧#6:0x36316480 AudioToolbox`AudioFileOpenWithCallbacks + 612
    第7帧:0x31f4c1ec AVFoundation`- [AVAudioPlayer initWithData:error:] + 120

“解决方案”:事实证明,如果我禁用所有异常的异常断点并且只为Objective-C异常使用断点,问题就会消失。但是它并不能解决AVAudioPlayer分配抛出C ++异常的问题。

EN

回答 2

Stack Overflow用户

发布于 2018-04-16 15:57:00

添加异常断点并将异常类型从“全部”编辑为“Objective-C异常”

AudioToolbox中的某些类抛出常规的C ++异常。你可以用这种方式过滤它们。

票数 0
EN

Stack Overflow用户

发布于 2018-04-16 17:01:05

AVAudioPlayer和AVAudioRecorder都会抛出异常,其中几个。这些是由玩家在内部处理的,但是如果你有“所有断点”的断点(即例外:全部,中断:在投掷中),你会发现这些例外。如果您继续执行这些操作,应用程序将继续正常运行,而不会崩溃。

到目前为止,我唯一提出的解决方案是单击Breakpoint Navigator中的断点栏,禁用此特定断点,并禁用它。

当/如果应用程序曾经抛出一个抛出的异常,我cmd-6,启用该断点,然后重新运行,并做任何我崩溃时做的事情。

设置为“Objective-C异常”显然是如何做到的。看到上面的答案!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档