gpt4 book ai didi

ios - 如何防止在 Swift 中延迟加载静态变量

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:01 25 4
gpt4 key购买 nike

我编写了一个 Swift 实用程序类,在其中定义了几个静态方法和一个私有(private)静态常量。但是,我希望在第一次引用该类之后立即加载此常量,而不是延迟加载。我唯一能想到的就是在每个静态函数中引用静态常量,如下所示:

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
} ()

.
.
.

但是,该解决方案看起来很丑陋。有没有更清洁的方法?我可以使用某种初始化回调吗?

最佳答案

好的,我似乎找到了解决我自己问题的可行方法。

  1. 确保该类是 NSObject 的子类。
  2. 插入以下代码:

override class func initialize() { 
_ = myObserver
}

执行此操作后,根据需要在引用类后立即加载静态常量。

当然,这种方法的局限性在于该类必须是NSObject的子类,这可能对所有此类类都是不可能的。欢迎使用这种方法的任何其他潜在缺点!

关于ios - 如何防止在 Swift 中延迟加载静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41095498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com