2010-09-12 2 views
1

Я пытаюсь написать свое первое приложение для iPhone, и у меня возникли проблемы с делегатом.Установить делегат в другом классе

У меня есть класс, который использует AVAudioPlayer для воспроизведения некоторого звука, тогда у меня есть еще один класс, который мне нужно что-то сделать, когда этот звук будет завершен. Поэтому мне нужен этот класс для реализации метода audioPlayerDidFinishPlaying аудиоплеера.

Проблема в том, что я не могу решить, как сделать мой второй класс делегатом аудиоплеера, который является членом первого класса. Я создал метод в первом классе, который ссылается на класс и запускает метод setDelegate, но метод audioPlayerDidFinishPlaying никогда не вызывается. Однако, если я реализую метод audioPlayerDidFinishPlaying в первом классе, он получает название fine. Как я могу заставить audioPlayerDidFinishPlaying вызываться во втором классе?

Таким образом, код, я использую, чтобы добавить делегата, в первом классе у меня есть этот метод:

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

тогда во втором классе я звоню его из этого

[class1 setAudioDelegate:self]; 
+0

Вы говорите, что уже пытались назначить экземпляр своего второго класса в качестве делегата экземпляра AVAudioPlayer. Можете ли вы опубликовать код, который вы сделали для этого? – imaginaryboy

+0

@imaginaryboy см. Обновление –

+0

Ничего из этого опубликованного кода не так. Простите очевидные вопросы, но вы уверены, что «class1» и «audioPlayer» не ноль во время вызова setAudioDelegate: call? – imaginaryboy

ответ

3

Подтвердите, что оба «аудиоплеер» и «класс1» не равны нулю при попытке установить делегат аудио.

0

Делегат работает индивидуально. Если вы хотите, чтобы отношения между экземплярами работали по принципу «многие ко многим» или «один ко многим», возможно, вы могли бы изучить NSNotification class reference или Notification Programming Guide.

Смежные вопросы