我在我的 TimeView Controller 中收到错误“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()
}
}
}
最佳答案
你有一个无限递归循环。当您初始化 SoundEffects
时,它会初始化其 soundEffects
变量,该变量会初始化 SoundEffects
对象,该对象会初始化 soundEffects
var ,这...
你看到问题了吗?
关于objective-c - 在 Obj-C 到 Swift 转换中接收 'EXC_BAD_ACCESS Code=2',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168000/