Intereting Posts
Как использовать NSWritingDirectionAttributeName в swift? Как создать кнопку Отмена в UISearchbar Как напрямую редактировать объекты PFQueryTableViewController NSArray Возможно ли соответствовать StringLiteralConvertible с перечислением? Не удается создать приложение с помощью SDK версии 3.1 на iOS 6 Сроки и повторение выполнения потоков в Objective-C Xcode 9 iOS 11 симуляторов Touch ID не работает Как играть в потоковое аудио в iPhone / iPad Проверка подключения к Интернету с классом PNReachability pinterest api не дает ответа (http://pinterestapi.co.uk/username/pins) Нажмите в UIWebView, чтобы скрыть клавиатуру NSGenericException, причина: Нет активного и включенного видеосоединения В Swift, почему я получаю сообщение об ошибке при попытке Println textfield.text Записывайте звук и воспроизводите один и тот же звук одновременно в iphone Как изменить цвет кнопки «Назад», когда цвет панели навигации изменяется на разных контроллерах просмотра?

Как играть в AVAudioPlayer локально для метода в ios5?

Я думаю, что это связано с ARC в iOS 5, но когда я объявляю AVAudioPlayer в методе и воспроизвожу его, он не будет воспроизводиться. Я думаю, что он автоматически запускается в конце метода, потому что я не помню этого до iOS5. Если я сделаю глобальную переменную, она отлично работает. Любой способ использовать локальный экземпляр?

Сделайте это сохраненным свойством и сделайте свой класс делегатом, чтобы вы могли очистить его, когда игра закончилась. В вашем заголовке:

@interface MyClass : NSObject <AVAudioPlayerDelegate> @property(strong)AVAudioPlayer *player; 

Затем, когда вы его используете:

 self.player = [AVAudioPlayer alloc] initWithContentsOfURL:URL error:&err]; [player setDelegate:self]; 

и очистите его в методе делегата:

 -(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)playedSuccessfully { self.player = nil; } 

Одна хорошая вещь о том, чтобы иметь это свойство, заключается в том, что вы можете прервать его, если вам нужно:

 -(void)someInterruptionOccurred { [self.player stop]; }