我正在使用这段代码来延迟 tableView 的出现/消失。
var timer = NSTimer()
let delay = 0.5
timer = NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: #selector(delayedHideTableView), userInfo: nil, repeats: false) // Warning: Variable 'timer' was written to, but never read
也许我对计时器变量做错了什么,如何避免这个错误?我知道我可以使用 print(timer) 语句,但我认为这不是最佳实践。
最佳答案
您的代码中存在一些问题:
您正在将
timer
声明为变量,您正在使用NSTimer()
填充它,并且在下面的 2 行中您正在覆盖该值。那么,为什么首先将NSTimer
分配给timer
呢?如果您不使用
NSTimer.scheduledTimerWithTimeInterval(...)
返回的值,为什么要将它保存到timer
中?最后,要将使用选择器的方法调用到不继承
<NSObject
的类中,您应该使用@objc
公开该方法。#selector
的正确语法是#selector(ClassName.methodName)
所以
class Foo {
func foo() {
let delay = 0.5
NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: #selector(Foo.delayedHideTableView), userInfo: nil, repeats: false)
}
@objc func delayedHideTableView() {}
}
关于swift - 如何在 Swift 中使用计时器避免 "variable was written to, but never read"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37975328/