它用来创建一个单身人士。 dispatch_once
将确保无论您致电sharedPeriodicElements
多少次,初始化程序将只在您的应用程序的整个生命周期内被调用一次。
块虽然有点过分,但因为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;
}
代码使其线程安全,并使用dispatch_once GCD。搜索这两个术语:) –
感谢Anoop Vaidya :) – chinabenjamin66
不正确的代码,以使线程安全的东西,在那。虽然不正确,但它工作。但它确实引起了关于其他代码库质量的问题。 – bbum