AVAudioPlayer.play()不播放声音

问题描述:

为什么下面的代码不能播放声音?它为play()返回“true”,但我什么也听不到。AVAudioPlayer.play()不播放声音

let path = "/Users/account/Music/sound.mp3"; 
    let fileURL = NSURL(fileURLWithPath: path) 
    var Player = AVAudioPlayer(contentsOfURL:fileURL, error:nil); 

    Player.delegate = self; 
    Player.prepareToPlay(); 
    Player.volume = 1.0; 
    var res = Player.play(); 
    println(res); 

如果我改用下面的代码,我可以听到声音。

var inFileURL:CFURL = fileURL!; 
    var mySound = UnsafeMutablePointer<SystemSoundID>.alloc(sizeof(SystemSoundID)); 
    AudioServicesCreateSystemSoundID(inFileURL, mySound); 
    AudioServicesPlaySystemSound(mySound.memory) 
  • OS X约塞米蒂10.10.3
  • 的Xcode 6.2

的问题是,Player,你AVAudioPlayer,是局部变量。所以它就会立即失效 - 甚至可以开始播放,更不用说完成播放了。

解决方法:使它成为属性而不是持续

+0

而且,对于本地(自动)变量和属性之间的关键生命期差异,请参阅我的书:http://www.apeth.com/swiftBook/ch03.html#_variable_scope_and_lifetime – matt 2015-03-31 22:32:32

+0

我添加了var Player:AVAudioPlayer = AVAudioPlayer();功能外,然后它的工作。 – 2015-04-01 02:34:58