2010-09-12 61 views
1

我正在尝试编写我的第一个iPhone应用程序,并且遇到了一些问题。在不同的类中设置代理

我有一个利用AVAudioPlayer播放声音的类,然后我有另一个类,当声音完成时我需要做些什么。所以我需要这个类来实现音频播放器的audioPlayerDidFinishPlaying方法。

问题是,我无法弄清楚如何让我的第二类成为第一类成员的音频播放器的代表。我在第一个类中创建了一个方法,它接受一个类的引用并在其上运行setDelegate方法,但audioPlayerDidFinishPlaying方法永远不会被调用。但是,如果我在第一个类中实现audioPlayerDidFinishPlaying方法,它会被调用的很好。我怎样才能在第二课中调用audioPlayerDidFinishPlaying?

所以,我使用添加的委托,在第一类中的代码,我有这样的方法:

-(void) setAudioDelegate:(id)delegate{ 
    [audioPlayer setDelegate:delegate]; 
} 

然后在第二类我是来自这个

[class1 setAudioDelegate:self]; 
叫它
+0

你说你已经试过将你的'第二类'的实例指定为AVAudioPlayer实例的委托。你可以发布你所做的代码吗? – imaginaryboy 2010-09-12 20:42:53

+0

@imaginaryboy查看更新 – 2010-09-12 20:48:21

+0

该发布的代码没有任何错误。原谅明显的问题,但是你确定setAudioDelegate:调用时'class1'和'audioPlayer'不是零吗? – imaginaryboy 2010-09-12 20:58:10

回答

3

确认在您尝试设置音频代表时,'audioPlayer'和'class1'不为零。