У меня есть AVAudioPlayer в отдельном классе, который я загружаю в ViewController. Вот код:AVAudioPlayer не воспроизводит звук?
import Foundation
import AVFoundation
class SoundController {
var audioPlayer: AVAudioPlayer!
init() {
}
func playAudio() {
let path = NSBundle.mainBundle().pathForResource("ring-ring", ofType: "aiff", inDirectory: "Media")!
let url = NSURL(fileURLWithPath: path)
do {
print("Let's play the sound")
let sound = try AVAudioPlayer(contentsOfURL: url)
self.audioPlayer = sound
sound.play()
} catch {
print("Error playing sound file")
}
}
}
А вот ViewController
override func viewDidLoad() {
super.viewDidLoad()
let sound = SoundController()
sound.playAudio()
}
Все компилирует и я получаю консольный вывод «Давайте играть звук», но независимо от того, какое устройство я испытываю, звук Безразлично Не играй. Какие-нибудь советы, что не так?
какой объект хранит ваш «звук»? в этом коде нет такой вещи, поэтому «звук» будет выпущен сразу же после того, как «-viewDidLoad» выйдет из области, даже если вы можете услышать что-то. – holex
что это за фикс здесь? – Tronic
возможно, понимание того, как работает ARC .... что может помочь решить текущую проблему для вас за секунду; потому что в этом случае вы сохранили бы сильный указатель где-то вне области действия, и экземпляр класса SoundController не будет выпущен сразу после создания экземпляра. – holex