它用來創建一個單身人士。 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