gpt4 book ai didi

swift - 在类范围内声明和初始化静态对象

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:47 26 4
gpt4 key购买 nike

在 Objective-C 中,类通常会保留对该类将多次使用的实例的静态引用。例如,

@implementation MyClass

static NSDateFormatter *dateFormatter = nil;

+ (void) initialize {
if (self == [MyClass class]) {
dateFormatter = [[NSDateFormatter alloc] init];
}
}

@end

在 Swift 中,我们不再需要在两个不同的地方声明和初始化这个静态对象。我们可以简单地做

let dateFormatter = NSDateFormatter()

在类范围内,日期格式化程序在类加载时初始化。

我的问题:在用 Swift 编写时,是否有任何理由使用这种新模式?仍然可以在模块范围内声明日期格式化程序,然后在 initialize 中对其进行初始化;有什么理由分两步完成吗?

最佳答案

不,没有这样的理由;自初始化变量是解决之道。

更好的是,将其自初始化为一个调用的闭包,并且可以在那里进一步初始化/配置日期格式化程序。

不仅如此,如果您将其标记为@lazy,那么在您第一次实际访问它之前,它甚至不会被初始化。

关于swift - 在类范围内声明和初始化静态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24107317/

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