Не возвращайте объект. Вместо этого скажите объекту fliteTTS
, чтобы играть.
Добавить метод fliteTTS:
-(void)play {
[audioPlayer play];
}
Теперь создать экземпляр fliteTTS
в контроллере представления, а затем вызвать
[myFliteTTSInstance play]
Делая это таким образом позволяет класс, который является владельцем аудиоплеер, чтобы сделать другие настройки и разрывы, которые вы можете захотеть сделать, когда начнете играть. Идея состоит в том, чтобы отсортировать аудиоплеер с объектом, которому он принадлежит, вместо прямого доступа к нему от того, кто знает, где.
В качестве альтернативы вы можете создать способ возврата аудиопроигрывателя напрямую.
-(AVAudioPlayer*)audioPlayer {
return audioPlayer;
}
А потом с контроллера зрения, вы могли бы назвать
[[myFliteTTSInstance audioPlayer] play];
Но это более хрупкими по разным причинам. Если класс fliteTTS
содержит экземпляр аудиоплеера, он также должен иметь возможность контролировать его для вас. Так сделайте это первым способом, если сможете.
Кстати, это хорошая практика, чтобы назвать свои классы с капиталом для первой буквы - FliteTTS вместо fliteTTS. – benwong