无法在管理器中设置 AVAudioPlayerDelegate class
Cannot setup AVAudioPlayerDelegate in a Manager class
我正在使用我在 AppDelegate.swift class 中初始化为全局变量的管理器 class 来管理在我的应用程序中播放音乐。这是我的经理的一些代码 class
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)
我试过将其他文件设为委托,但也没有用。有没有办法让我的经理成为代表,以便它可以在播放完歌曲时响应播放器?
我认为当您设置委托时,myAVAudioManager 仍然是 nil。尝试创建新的 AVAudioPlayer 实例。
我正在使用我在 AppDelegate.swift class 中初始化为全局变量的管理器 class 来管理在我的应用程序中播放音乐。这是我的经理的一些代码 class
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)
我试过将其他文件设为委托,但也没有用。有没有办法让我的经理成为代表,以便它可以在播放完歌曲时响应播放器?
我认为当您设置委托时,myAVAudioManager 仍然是 nil。尝试创建新的 AVAudioPlayer 实例。