我正在寻找类似于 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/