为audioPlayerEndInterruption方法委派AVAudioPlayer

时间:2012-05-09 16:02:54

标签: iphone avaudioplayer

我的 ViewController 名称是 Mainviewcontroller ,其中我正在执行 AVAudioplayer 的所有操作。

如果在h文件中我做

@class MainViewController;

@protocol MainViewControllerDelegate 

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)audioPlayer;

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)audioPlayer;

@end

@interface MainViewController : UIViewController <UIActionSheetDelegate, InfoDelegate, AVAudioPlayerDelegate> 

我对以上声明感到困惑,我应该做 AVAudioPlayerDelegate MainViewControllerDelegate

如果我 @protocolAVAudioPlayerDelegate ,那么我会收到黄色警告,说明AVAudioPlayer的重复协议定义被忽略

当我还没有在其他地方定义 @protocolAVAudioPlayer 时。

我的另一个困惑是我应该首先在h文件中声明这些方法,然后在m文件中实现

-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)audioPlayer;

-(void)audioPlayerEndInterruption:(AVAudioPlayer *)audioPlayer;

请帮忙。

1 个答案:

答案 0 :(得分:2)

我认为你在这里误用@protocol构造。您可以继续删除整个@protocol块,然后实现您的课程。您只需要指示您的类是AVAudioPlayer实例的委托,如下所示:

@interface MainViewController : UIViewController <UIActionSheetDelegate, InfoDelegate, AVAudioPlayerDelegate> 

然后,当您实例化AVAudioPLayer对象时,请务必将MainViewController指定为委托:

audioPlayInstance.delegate = self;

最后,实现要在AVAudioPlayer实例上调用的两个方法(我将其称为上面的audioPlayInstance)。您只需将这些放在.m文件中,而不是标题。这些方法的头声明由AVAudioPlayer.h类文件处理。

祝你好运!