¿Cuál es la razón exacta por la que el uso de dispatch_once en la instancia compartida de descriptor de acceso de un singleton en virtud de ARCO?
+ (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;
}
¿No es una mala idea para crear una instancia del singleton de forma asincrónica en el fondo? Me refiero a ¿qué sucede si me solicitar que la instancia compartida y confiar en él de inmediato, pero dispatch_once lleva hasta la Navidad para crear mi objeto? No regresa inmediatamente a la derecha? Al menos ese parece ser el punto principal de la Grand Central Dispatch.
Entonces, ¿por qué están haciendo esto?