首页>Program>source

每次加载应用程序时,它都会停止,就像在此行上设置了断点一样:

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文件将在断点之后加载并播放,没有任何问题。

你知道我在做什么错吗?

EDIT: 当它在断点处停止时,我进行了回溯.这是输出:

 (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(void *,long(*)(void *,unsigned long,unsigned long,unsigned long,void **,unsigned long *))+ 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 ,void const *,unsigned long *),long long(*)(void *),long(*)(void *,long long))+ 166
   帧6:0x36316480 AudioToolboxʻAudioFileOpenwithCallbacks + 612
   帧#7:0x31f4c1ec AVFoundation`- [AVAudioPlayer initwithData:error:] + 120

"SOLUTION": 事实证明,如果我为所有异常禁用异常断点,而仅对Objective-C异常使用断点,问题就会消失.但这并不能解决AVAudioPlayer的分配会引发C ++异常的问题。

最新回答
  • 1月前
    1 #

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

    AudioToolbox中的某些类会引发常规C ++异常.您可以通过这种方式过滤掉它们。

  • 1月前
    2 #

    AVAudioPlayer和AVAudioRecorder都将引发异常,其中有几个.这些是由玩家内部处理的,但是如果您有"所有断点"的断点(即例外:全部,休息:投掷),您将捕获这些例外.如果继续执行这些操作,则该应用将继续正常运行,并且完全不会崩溃。

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

    当/如果应用程序因抛出异常而崩溃时,我将执行cmd-6,启用该断点,然后重新运行并执行崩溃时的所有操作.

    编辑:设置为" Objective-C异常"显然是方法.见上面的答案!

  • 1月前
    3 #

    以下是显示如何解决此错误的屏幕截图.我不确定这是否与上面的答案所讨论的方式相同,但我认为类似。

    转到Xcode中的Breakpoint导航器。

    按住Control键并单击"所有例外"行。

    选择"编辑断点..."选项。

    更改 Exception 来自 AllObjective-C

  • 1月前
    4 #

    回溯功能很有帮助,谢谢! 我们最近开始遇到相同的问题.事实证明,抛出的mp3文件没有有效的ID3标签,并通过诸如Tagr之类的应用运行它们,从而将它们正确修复!

  • 1月前
    5 #

    在Xcode 9.2中,您可以禁用特定的异常 看过他们。 打开断点菜单,然后单击以禁用(渐变箭头)

  • coding style:python中列表推导或生成器表达式的行连续
  • events:Android:多点触控和TyPE_SySTEM_OVERLAy