objective-c - 在 Obj-C 到 Swift 转换中接收 'EXC_BAD_ACCESS Code=2'

标签 objective-c swift ios8 xcode6

我在我的 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/

相关文章:

ios - 在 iOS 8 中使用私有(private) API 打开 Siri

ios8 - 切换到arm64时打包出错(arm5还可以)

objective-c - 根据内容长度修改多行 NSTextField 的字体大小

swift - 获取 Swift 中日期之间剩余的分钟数

ios - 通过分享扩展分享到 Pinterest

swift - swift 中的运算符或方法,作为 python 的海象运算符

swift - Kitura TypeSafeHTTPBasic 身份验证在帖子正文中寻找凭据?

ios - 如何创建一个 UIImages 数组

ios - iPhone 模拟器显示错误图像

ios - 无法将特定的CGColor应用于CGContextSetFillColor