Objective c 对象自动中断处理错误

Objective c 对象自动中断处理错误,objective-c,sprite-kit,avaudiosession,interruption,objectal,Objective C,Sprite Kit,Avaudiosession,Interruption,Objectal,我在(SpriteKit)游戏运行时一直在打电话,以测试中断。我正在使用对象文档中名为: 所以,我让库自动处理这个 [OALAudioSession sharedInstance ]. handleInterruptions = YES 而且它只起了部分作用。例如,使用3种声音的简单设置,我会收到下一条错误消息: OALAudioSession activateAudioSession]:无法激活音频 尝试2次后的会话:错误域=NSOSStatusErrorDomain 代码=56101590

我在(SpriteKit)游戏运行时一直在打电话,以测试中断。我正在使用对象文档中名为:

所以,我让库自动处理这个

[OALAudioSession sharedInstance ]. handleInterruptions = YES
而且它只起了部分作用。例如,使用3种声音的简单设置,我会收到下一条错误消息:

OALAudioSession activateAudioSession]:无法激活音频 尝试2次后的会话:错误域=NSOSStatusErrorDomain 代码=561015905“操作无法完成。(OSStatus错误 561015905。)”

错误561015905==0x21706C61==!pla
,并参考AVAudioSession.h中声明的错误:

AVAudioSessionErrorCodeCannotStartPlaying='!pla',/*0x21706C61, 561015905

实际上这是可行的,有两次失败的尝试,第三次是成功的,什么都看不到,因为一切都很快,一切似乎都正常运转

我注意到,如果我添加更多的声音(比如20),我会收到相同的信息:

尝试20次后无法激活音频会话:

之后,会话被激活。然后,我只是在相关方法中添加了调试消息:

OALAudioSession.m

- (void) activateAudioSession
{
    NSError* error;
    for(int try = 1; try <= kMaxSessionActivationRetries; try++)
    {
        if([[AVAudioSession sharedInstance] setActive:YES error:&error])
        {

            NSLog(@"Session activated after %d", try);

            audioSessionActive = YES;
            return;
        }
        OAL_LOG_ERROR(@"Could not activate audio session after %d tries: %@", try, error);
        [NSThread sleepForTimeInterval:0.2];
    }
    OAL_LOG_ERROR(@"Failed to activate the audio session");
}  
-(void)activateAudioSession
{
n错误*错误;

对于(int try=1;try)我想在这里问你的问题:这些人对object al非常了解。当我被object al卡住时,我就是去问这个人的。@hamobi谢谢,我也会在那里问一下……我注意到,如果我设置AllowPod=NO和honorSilentSwitch=NO,我就不会出错。但这不是一个解决办法。