我编写了一个Swift实用程序类,其中我定义了几个静态方法和一个私有静态常量。但是,我希望在第一次引用类之后立即加载 ,而不是懒惰。我唯一能想到的就是在每个静态函数中引用静态常量,如下所示:
private static let myObserver: Observer = {
let observer = Observer(actionToPerform: foo1)
SomeOtherClass.register(observer)
return observer
}()
static func foo1() {
_ = myObserver
...
}
static func foo2() {
_ = myObserver
...
}
static func foo3() {
_ = myObserver
...
}
//even more of a hassle:
static let myIntConstant: Int = {
_ = myObserver
return 5
} ()
.
.
.
然而,这个解决方案看起来很难看。有更干净的方式吗?我可以使用某种类初始化回调吗?
答案 0 :(得分:4)
好吧,我似乎找到了一个可行的解决方案来解决我自己的问题。
NSObject
。
override class func initialize() {
_ = myObserver
}
执行此操作后,根据需要在引用类后立即加载静态常量。
当然,这种方法受限于这样一个事实,即类必须是NSObject
的子类,这对于所有这些类都是不可能的。这种方法的任何其他潜在缺点都会受到欢迎!