我正在寻找类似于 Objective-C 的 +(void)initialize 类方法的行为,因为该方法在类初始化时调用一次,此后不再调用。

一个简单的 class init () {}class 闭合中会非常时尚!很明显,当我们在结构闭包中使用“class var s”而不是“static var s”时,这一切都会非常匹配!

最佳答案

如果您有一个 Objective-C 类,最简单的方法是覆盖 +initialize 。但是,请确保您类(class)的 子类 也覆盖 +initialize 否则您类(class)的 +initialize 可能会被多次调用!如果需要,您可以使用 dispatch_once()(如下所述)来防止多次调用。

class MyView : UIView {
  override class func initialize () {
    // Do stuff
  }
}

如果你有一个 Swift 类,你能得到的最好结果是 dispatch_once() 语句中的 init()
private var once = dispatch_once_t()

class MyObject {
  init () {
    dispatch_once(&once) {
      // Do stuff
    }
  }
}

此解决方案与 +initialize(第一次向 Objective-C 类发送消息时被调用)不同,因此不是问题的真正答案。但它工作得很好,IMO。

关于ios - "initialize"Swift 类的类方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24137212/

10-13 05:39