在ARC下单例的共享实例访问器中使用dispatch_once的确切原因是什么?
+ (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;
}
在后台异步实例化单例不是一个坏主意吗?我的意思是,如果我请求该共享实例并立即依赖它,那会发生什么,但是dispatch_once直到圣诞节才创建我的对象?它不会立即返回,对吗?至少这似乎是Grand Central Dispatch的重点。
那他们为什么要这样做呢?
Note: static and global variables default to zero.