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
属性的函数发出警告。
我当时正在用 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
属性的函数发出警告。