Установить делегата в другом классе - PullRequest
1 голос
/ 13 сентября 2010

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

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

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

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

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

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

[class1 setAudioDelegate:self];

Ответы [ 2 ]

3 голосов
/ 13 сентября 2010

Убедитесь, что и 'audioPlayer', и 'class1' не равны nil, когда вы пытаетесь установить аудио-делегата.

0 голосов
/ 13 сентября 2010

Делегат работает один на один.Если вы хотите, чтобы отношения между экземплярами работали по принципу «многие ко многим» или «один ко многим», возможно, вы могли бы изучить Ссылку на класс NSNotification или Руководство по программированию уведомлений .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...