Objective-CでGCDのdispatch_onceを使用してシングルトンを作成する 質問する

Objective-CでGCDのdispatch_onceを使用してシングルトンを作成する 質問する

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]オブジェクトにアクセスするだけであれば、これで十分です。

おすすめ記事