无法在Manager类中设置AVAudioPlayerDelegate

时间:2016-05-25 03:06:14

标签: ios swift delegates avaudioplayer

我正在使用我在AppDelegate.swift类中初始化为全局变量的管理器类来管理在我的应用程序中播放音乐。这是我的经理类

的一些代码
import Foundation
import AVFoundation
import MediaPlayer

/*
protocol PlayerDelegate : class {
    func soundFinished(sender : AnyObject)
}*/
var quoteList = [Quote]()
var isRandomQuote = false

enum alarmTypes {
case song
case quote
case randomQuote
}
var myAVAudioPlayer:AVAudioPlayer = AVAudioPlayer()
var MPMediaPlayer = MPMusicPlayerController()

public class MediaManager: NSObject, AVAudioPlayerDelegate{

//weak var delegate : PlayerDelegate?

var MPMediaItem: MPMediaItemCollection!
var quoteSelected = Quote()

var alarmType = alarmTypes.randomQuote

func selectRandom(){
    self.alarmType = alarmTypes.randomQuote
    quoteSelected = pickRandomQuote()
}
func selectSong(MPMedia: MPMediaItemCollection){
    self.alarmType = alarmTypes.song
    MPMediaItem = MPMedia
}
func selectQuote(quote: Quote){
    self.alarmType = alarmTypes.quote
    quoteSelected = quote
}



var isPlaying:Bool = false

  override init(){
    super.init()
  myAVAudioManager.delegate = self 
}

然而,当我去运行代码时,我收到此错误:线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x8)

我尝试过将其他文件作为委托,但这也没有用。有没有办法让我的经理成为代表,以便在完成播放歌曲时能够回应播放器?

1 个答案:

答案 0 :(得分:0)

我认为当你设置委托时myAVAudioManager仍然是nil。尝试先创建AVAudioPlayer的新实例。