ARC kapsamında tek birtonun paylaşılan örnek erişimcisinde dispatch_once kullanılmasının nedeni nedir?Apple neden ARC kapsamında singleton şablonunu uygulamak için dispatch_once kullanılmasını önerir?
+ (MyClass *)sharedInstance
{
// Static local predicate must be initialized to 0
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken = 0;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}
Tektonu arka planda eşzamansız olarak başlatmak kötü bir fikir değil mi? Paylaşılan örneği talep edip hemen ona güvenirsem ne olur, ama dispatch_once benim nesneyi oluşturmak için Noel'e kadar sürer? Hemen geri dönmez mi? En azından bu, Grand Central Dispatch'in bütün noktası gibi görünüyor.
Peki neden bunu yapıyorlar?
'Not: statik ve genel değişkenler varsayılan olarak sıfırdır. – ikkentim