2010-09-12 38 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'不爲零。