iOS 4.0以上をターゲットにできる場合
GCD を使用することは、Objective-C (スレッドセーフ) でシングルトンを作成する最良の方法でしょうか?
+ (instancetype)sharedInstance
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
ベストアンサー1
これは、クラスのインスタンスを作成するための完全に許容可能でスレッドセーフな方法です。技術的には「シングルトン」ではないかもしれませんが (これらのオブジェクトは常に 1 つしか存在できないため)、メソッドを使用して[Foo sharedFoo]
オブジェクトにアクセスするだけであれば、これで十分です。