【发布时间】:2015-07-01 17:32:01
【问题描述】:
我在线上的 TimeView 控制器中收到错误“EXC_BAD_ACCESS (code=2,address=0x16fcbbfec)”
var soundEffects = SoundEffects()
我不知道为什么会这样......
我已为愿意查看并帮助我的任何人提供了指向我的源代码的链接。谢谢!
https://github.com/JohnnyH1012/HRC
相关代码
import UIKit
import AVFoundation
class SoundEffects: NSObject, AVAudioPlayerDelegate {
var soundEffects = SoundEffects()
var player = AVAudioPlayer()
var storage = SettingsStorage()
var enabled:Bool = false
var newValue:Bool = true
var tabata: Tabata!
var theme: Theme!
func registerSoundEffects() {
soundEffects = SoundEffects.new()
NSNotificationCenter.defaultCenter().addObserver(soundEffects, selector: "stateChanged:", name: StateChanged, object: nil)
NSNotificationCenter.defaultCenter().addObserver(soundEffects, selector: "prepareSignal:", name: PrepareSignal, object: nil)
var error:NSError?
var url: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("beep_01", ofType: "mp3")!)!
player = AVAudioPlayer(contentsOfURL: url, error: &error)
player.numberOfLoops = 0
player.prepareToPlay()
enabled = storage.loadSoundEnabled()
}
func isEnabled() {
return enabled = true
}
func setEnabled() {
enabled = newValue
storage.saveSoundEnabled(newValue)
}
func stateChanged(notification: NSNotification) {
if enabled {
var tabata: Tabata! = notification.object! as! Tabata
switch tabata.getState() {
case .EXERCISE: fallthrough
case .RELAXATION:
player.play()
break
default:
break
}
}
}
func prepareSignal(notification:NSNotification) {
if enabled {
player.play()
}
}
}
【问题讨论】:
标签: objective-c swift ios8 xcode6