ios - 使用类型方法时出错

标签 ios swift exc-bad-access

好的,我一直在研究 Apple 的 Swift 手册并遇到了这个例子。我输入它并收到“com.apple.main-thread”,停止原因 = EXC_BAD_ACCESS (code=EXC_I386_GPFLT) 错误:

if level > highestUnlockedLevel { highestUnlockedLevel = level }

我回去检查我的工作。我通过 TextWrangler 将我输入的内容与书中的示例进行了比较,没有区别。然后我重新启动了我的机器,没有运气,然后回去在 Xcode 6 Beta 版本 7 上尝试它。同样的错误。事实上,下面的代码是从书中摘录的。有人可以试试这个,看看他们是否收到相同的错误吗?

struct LevelTracker {
    static var highestUnlockedLevel = 1
    static func unlockLevel(level: Int) {
        if level > highestUnlockedLevel { highestUnlockedLevel = level }
    }
    static func levelIsUnlocked(level: Int) -> Bool {
        return level <= highestUnlockedLevel
    }
    var currentLevel = 1
    mutating func advanceToLevel(level: Int) -> Bool {
        if LevelTracker.levelIsUnlocked(level) {
            currentLevel = level
            return true
        } else {
            return false
        }
    }
}

class Player {
    var tracker = LevelTracker()
    let playerName: String
    func completedLevel(level: Int) {
        LevelTracker.unlockLevel(level + 1)
        tracker.advanceToLevel(level + 1)
    }
    init(name: String) {
        playerName = name
    }
}

var player = Player(name: "Argyrios")
player.completedLevel(1)
println("highest unlocked level is now \(LevelTracker.highestUnlockedLevel)")

最佳答案

highestUnlockedLevel 定义为static 因此换行

highestUnlockedLevel = level

到:

LevelTracker.highestUnlockedLevel = level

Playground

struct LevelTracker {
    static var highestUnlockedLevel = 1

    static func unlockLevel(level: Int) {
        if level > highestUnlockedLevel {
            LevelTracker.highestUnlockedLevel = level
        }
    } 
}    

LevelTracker.unlockLevel(5)

关于ios - 使用类型方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791094/

相关文章:

ios - ProjectName-Swift 问题 - 找不到 'CLLocationManagerDelegate' 的协议(protocol)声明

ios - 使用自定义类时删除行的问题

ios - 下载任务中的AFNetworking EXC_BAD_ACCESS(代码= 2,地址= 0x0)

ios - 在 UITableView 中显示 Json 结果

iphone - 右侧按钮未出现在模态视图 Controller 上

ios - 在 Swift 2 中对字典数组进行排序

cocoa - NSTextView 中的委托(delegate)链接在键入时导致 EXC_BAD_ACCESS

ios - Swift 2 FirebaseTableView

ios - 选择器 'touchesBegan:withEvent:' 的覆盖方法具有不兼容的类型 '(NSSet, UIEvent) -> ()'

iphone - 应用程序唤醒时 EXC_BAD_ACCESS (SIGBUS) 和 EXC_BAD_ACCESS (SIGSEGV) 崩溃