我正在使用Matt的旧AudioStreamer开发音频流应用程序,并且我尝试使用以下方法(当接到电话时)打扰您:

- (void)MyAudioSessionInterruptionListener(void *inClientData, UInt32 inInterruptionState)
{
        AudioStreamer *streamer = (AudioStreamer*)inClientData;
        if (inInterruptionState == kAudioSessionBeginInterruption)
        {
            [streamer stop];
            NSLog(@"kAudioSessionBeginInterruption");
        }
        else if (inInterruptionState == kAudioSessionEndInterruption)
        {
            [self playpause];
            NSLog(@"kAudioSessionEndInterruption");
        }
}

我的问题是我试图用[self playpause]调用函数“playpause”;但是我出现了一个未声明的playpause错误!

如何在MyAudioSessionInterruptionListener内部声明playpause?

最佳答案

假设AudioStreamer类是带有该方法的类,则它不是[self playPause]应该是[streamer playpause]。listener方法是您类之外的静态C函数,因此您不能在self上调用方法,因为self意味着您在该类的实例中。如果带有该方法的类不是AudioStreamer,那么您将不得不在inClientData参数中传递该类,以便能够掌握它。

希望能有所帮助

10-08 08:06