Пример кода 1:Objective-C одноточечно создание
+ (MyClass *)sharedInstance{
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
Пример кода 2
+ (MyClass *)sharedInstance{
static MyClass *sharedInstance = nil;
if (!sharedInstance) {
sharedInstance = [[MyClass alloc] init];
}
return sharedInstance;
}
Существуют ли какие-либо различия в результате указанных выше образцов кода?
Как 'dispatch_once' быстрее, чем' if'? это быстрее, чем '@ synchronized', да, но второй образец кода не имеет' @ synchronized'. – FreeNickname