swift - 如何在 Swift 中使用计时器避免 "variable was written to, but never read"警告

标签 swift timer warnings var

我正在使用这段代码来延迟 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) 语句,但我认为这不是最佳实践。

最佳答案

您的代码中存在一些问题:

  1. 您正在将 timer 声明为变量,您正在使用 NSTimer() 填充它,并且在下面的 2 行中您正在覆盖该值。那么,为什么首先将 NSTimer 分配给 timer 呢?

  2. 如果您不使用 NSTimer.scheduledTimerWithTimeInterval(...) 返回的值,为什么要将它保存到 timer 中?

  3. 最后,要将使用选择器的方法调用到不继承 NSObject 的类中,您应该使用 @objc 公开该方法。

    <
  4. #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/

相关文章:

swift - Swift计算多维数组的维数

c - 为在服务器上花费的时间构建 "odometer"

iphone - 多次按下按钮会导致 ios cocoa 中的单一操作

JavaScript setTimeout 不起作用

ios - 是否可以在显示本地通知之前触发 api 调用?

ios - 尝试更新文本(特别是游戏中老板的健康状况)并获得 "exc_bad_instruction (code=exc_i386_invop subcode=0x0)"

.net - 警告 : Variable is passed by reference before it has been assigned a value. 运行时可能会导致空引用异常

Java未检查警告添加数组列表

iphone - 使用 Cocoapods 时忽略 Xcode 警告

ios - 单击按钮快速重新加载 Collection View 不起作用