Intereting Posts
изменить ограничения с помощью NSLayoutConstraint Как создать иерархическое меню в iOS? Использование UIPickerView несколько раз. Цель IOS-C Как реализовать прикосновение при использовании кварца-2d Совместное использование основных данных iCloud между iOS и OS X Как заставить приложение ждать завершения запроса Firebase Как удалить угловой радиус стиля формы листа UIViewController Передайте NSManagedObject из одного класса в другой класс на языке Swift Programming? iOS: locationManager: didUpdateToLocation: fromLocation: сообщает скорость, когда не перемещается iOS HLS (Http Live Streaming) начинается с более низкой полосы пропускания. В чем разница между идентификатором пакета и идентификатором пакета продуктов? Как проверить, что пользователь уже приобрел или не использует In-App Purchase в iOS на основе идентификатора Apple Внедрение стека в Swift Невозможно заставить SDK GoogleMaps работать с целевой программой Xcode Test (работает в App Target) Безопасно ли передать блок Objective-C для выполненияSelector: withObject: afterDelay :?

Как играть в 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]; }