【问题标题】:Custom NSWindowController subclass自定义 NSWindowController 子类
【发布时间】:2014-08-19 10:30:53
【问题描述】:

我一直在一个小的 Mac 应用程序中使用 Swift。

我一直在尝试添加一个非可选的实例变量,但似乎我必须重写两个 init 方法。我最终得到(编译)的代码如下所示:

class CustomWindowController: NSWindowController {
  var items: [Int]

  required init(coder: NSCoder!) {
    items = [1, 2, 3]
    super.init(coder: coder)
  }

  override init(window: NSWindow!) {
    items = [1, 2, 3]
    super.init(window: window)
  }
}

我试图抽象出items 初始化,但它不会编译,因为“`self 在超级初始化调用之前使用”。这是我尝试过的:

class CustomWindowController: NSWindowController {
  var items: [Int]

  required init(coder: NSCoder!) {
    setup()
    super.init(coder: coder)
  }

  override init(window: NSWindow!) {
    setup()
    super.init(window: window)
  }

  func setup() {
    items = [1, 2, 3]
  }
}

我有点困惑。这些是我的问题:

  1. 为什么我必须重写两个指定的初始化程序?我以为一般都有一个?
  2. overriderequired 之间有什么区别?为什么每个初始化程序都需要不同的?
  3. 有没有办法抽象出初始化代码?

【问题讨论】:

    标签: cocoa swift


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多