【发布时间】:2016-12-12 06:49:20
【问题描述】:
我编写了一个 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
} ()
.
.
.
但是,该解决方案看起来很丑陋。有没有更清洁的方法?我可以使用某种 class 初始化回调吗?
【问题讨论】:
-
你为什么不使用单例类呢?
-
@Mohammadalijf 这总是有可能的。但我很想知道是否有针对静态内容的解决方案。
标签: ios swift lazy-loading lazy-evaluation lazy-initialization