コードサンプル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'より速いですが、2番目のコードサンプルに' @synchronized'がありません。 – FreeNickname