初始化需要"self"作为参数的Swift属性

blo*_*ilk 9 ios swift ios8

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

class UpdateManager {
  let timer: NSTimer

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

  func check() {
    // Do some stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,Swift不喜欢我传递selfNSTimer初始化器的事实.我在这里打破了一些模式吗?一个人应该如何完成这样的初始化?

jtb*_*des 17

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

  • 您需要访问selfinit,之前timer被初始化.
  • 否则,永远不timer应该是零,所以你不应该在外面检查它.init

所以,你应该申报let timer: NSTimer!.