在 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/