Ios5 处理音频单元的音频中断时的不同结果

Ios5 处理音频单元的音频中断时的不同结果,ios5,audio,core-audio,Ios5,Audio,Core Audio,我已经搜索了这里的所有相关帖子和苹果文档,没有找到答案。根据苹果的示例代码aurioTouch,我有一个如下处理程序: static void rioInterruptionListener(void *inClientData, UInt32 inInterruption) { printf("Session interrupted! --- %s ---", inInterruption == kAudioSessionBeginInterruption ?

我已经搜索了这里的所有相关帖子和苹果文档,没有找到答案。根据苹果的示例代码aurioTouch,我有一个如下处理程序:

static void rioInterruptionListener(void *inClientData, UInt32 inInterruption)
{
    printf("Session interrupted! --- %s ---", 
            inInterruption == kAudioSessionBeginInterruption ? 
            "Begin Interruption" : "End Interruption");

    AudioObjectImpl *THIS = (__bridge AudioObjectImpl *)inClientData;

    if (inInterruption == kAudioSessionEndInterruption) {
       // make sure we are again the active session
        XThrowIfError(AudioSessionSetActive(true), "couldn't set audio session active");
        XThrowIfError(AudioOutputUnitStart(THIS->rioUnit), "couldn't start unit");
        THIS->inInterrupt = false;
    }

    if (inInterruption == kAudioSessionBeginInterruption) {

       XThrowIfError(AudioOutputUnitStop(THIS->rioUnit), "couldn't stop unit");
        THIS->unitIsRunning = false;
        THIS->inInterrupt = true;
    }
}
AudioObjectImpl是音频单元的所有者。 消息是执行“操作”的宏,如果捕获到异常,则打印“消息”。这是从aurioTouch示例代码中复制的

此代码对传入呼叫中断有效,通过拒绝呼叫,中断的音频被恢复。 但当我在“设置”“常规”“声音”铃声中选择铃声时,它崩溃了

崩溃点在…AudioSessionSetActivetrue…,为什么这两种情况不同?在这两种情况下,它是如何工作的