Swift 2 中的初始化问题

Initialization issue in Swift 2

我当时正在用 Swift 1 和 Xcode 6 开发一款游戏,一切都很完美。但是当我更新到 XCode 7 和 Swift 2 时,我遇到了一个奇怪的问题。在我的游戏中,我将一些 NSTimer 保存在变量中以生成敌人。其中一个变量的示例如下所示:

var firstTimer = NSTimer.scheduledTimerWithTimeInterval(actualTime, target: self, selector: Selector("SpawnEnemy"), userInfo: nil, repeats: true)

当我更新时,每个这种类型的变量(我有 4 个)都有一个问题:“变量 "firstTimer" 的初始化从未使用过;考虑用赋值替换为” _" 或删除它。"

我不能只将每个变量的名称都更改为“_”,而且我从来不必初始化它。 到底是怎么回事?为什么以前没有发生过这种情况?

顺便说一句:我确实在代码中使用了这个变量。

错误说明了一切,您根本没有在代码中使用该值。如果你打算永不停止计时器,你可以像这样省略变量的声明:

NSTimer.scheduledTimerWithTimeInterval(actualTime, target: self, selector: Selector("SpawnEnemy"), userInfo: nil, repeats: true)

但是如果你想稍后停止它,你可能应该保存它:

class MyViewController {
    var timer : NSTimer?

    func startTimer() {
        timer = NSTimer.scheduledTimerWithTimeInterval(actualTime, target: self, selector: Selector("SpawnEnemy"), userInfo: nil, repeats: true)
    }

    func stopTimer() {
        timer?.invalidate()
    }
}

你能做什么:

  • var timer = ... 发出警告,指出您没有使用该值(如果您没有使用),并警告说 timer 从未更改,应该是 let
  • let timer = ... 警告您没有使用该值(如果您没有使用)
  • let _ = ..._ = ... 相同,计算右侧并丢弃结果。没有警告
  • Just ... 与上一个相同,但可以在未使用结果时对具有 @warn_unused_result 属性的函数发出警告。