我正在寻找类似于Objective-C的+(void)initialize
类方法的行为,因为该方法在类初始化时调用一次,此后再也不会调用.
一个简单的class init () {}
在一个class
关闭将真的很光滑!显然,当我们在 struct 闭包中使用"class var
s"而不是"static var
s"时,这一切都会非常匹配!
我正在寻找类似于Objective-C的+(void)initialize
类方法的行为,因为该方法在类初始化时调用一次,此后再也不会调用.
一个简单的class init () {}
在一个class
关闭将真的很光滑!显然,当我们在 struct 闭包中使用"class var
s"而不是"static var
s"时,这一切都会非常匹配!
如果您有一个Objective-C类,最简单的方法就是覆盖+initialize
.但是,确保您的类中的subclasses个也重写+initialize
,否则您的类的+initialize
可能会被多次调用!如果您愿意,您可以使用dispatch_once()
(如下所述)来防范多个呼叫.
class MyView : UIView {
override class func initialize () {
// Do stuff
}
}
如果你有一个SWIFT类,你能得到的最高值是init()
语句中的dispatch_once()
.
private var once = dispatch_once_t()
class MyObject {
init () {
dispatch_once(&once) {
// Do stuff
}
}
}
此解决方案不同于+initialize
(在第一次发送Objective-C类消息时调用),因此不是问题的真实答案.但是已经足够好了,国际海事组织.