一尘不染

初始化需要“自我”作为参数的Swift属性

swift

我有一个Swift类,我想看起来像这样:

class UpdateManager {
  let timer: NSTimer

  init() {
    timer = NSTimer(timeInterval: 600, target: self, selector: "check", userInfo: nil, repeats: true)
  }

  func check() {
    // Do some stuff
  }
}

但是,Swift不喜欢我要传递selfNSTimer初始化程序的事实。我在这里打破某些模式吗?应该如何完成这样的初始化?


阅读 210

收藏
2020-07-07

共1个答案

一尘不染

您已经找到了Implicitly Unwrapped
Optional
的主要用例。

  • 你需要访问selfinit,之前timer被初始化。
  • 否则,timer应该 永远 是零,所以你不应该有外部的检查init

因此,您应该声明let timer: NSTimer!

2020-07-07