在不同的类中设置委托

时间:2010-09-12 20:32:54

标签: iphone objective-c delegates

我正在尝试编写我的第一个iPhone应用程序,但我遇到了代理问题。

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

问题是,我无法弄清楚如何使我的第二课成为第一堂课成员的音频播放器的代表。我在第一个类中创建了一个方法,该方法引用了一个类并在此上运行了setDelegate方法,但是从不调用audioPlayerDidFinishPlaying方法。但是,如果我在第一个类中实现audioPlayerDidFinishPlaying方法,它会被称为罚款。如何在第二节课中调用audioPlayerDidFinishPlaying?

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

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

然后在第二课我从这个

调用它
[class1 setAudioDelegate:self];

2 个答案:

答案 0 :(得分:3)

在您尝试设置音频委托时,确认'audioPlayer'和'class1'都不是nil。

答案 1 :(得分:0)

代表以一对一的方式工作。 如果您希望实例之间的关系以多对多或一对多的方式工作,那么您可以学习NSNotification class referenceNotification Programming Guide