好的,我一直在研究 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/