查看代码块,它是一个类方法。任何人都可以给我一些这种方法的解释吗?它做了什么?
+ (PeriodicElements *)sharedPeriodicElements {
@synchronized(self) {
static dispatch_once_t pred;
dispatch_once(&pred, ^{ sharedPeriodicElementsInstance = [[self alloc] init]; });
}
return sharedPeriodicElementsInstance;
}
答案 0 :(得分:3)
它用于创建单身人士。 dispatch_once
无论您拨打sharedPeriodicElements
多少次,都会确保初始化程序只会在您应用的整个生命周期内被调用一次。
synchronized
块有点过头,因为dispatch_once
已经是线程安全的。看起来你正在看旧单身人士做旧方式的部分变异版本:
+ (PeriodicElements *)sharedInstance {
static PeriodicElements *sharedPeriodicElementsInstance;
@synchronized(self) {
if (sharedPeriodicElementsInstance == nil) {
sharedPeriodicElementsInstance = [[PeriodicElements alloc] init];
}
}
return sharedPeriodicElementsInstance;
}
要明确(thx @bbum),这就是你应该运行的:
+(PeriodicElements *)sharedPeriodicElements {
static dispatch_once_t pred;
dispatch_once(&pred, ^{ sharedPeriodicElementsInstance = [[self alloc] init]; });
return sharedPeriodicElementsInstance;
}