1. ホーム
  2. ios

[解決済み] Objective-CでGCDのdispatch_onceを使用してシングルトンを作成する

2022-03-16 05:18:16

質問

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つしか存在し得ないという意味で)。 [Foo sharedFoo] メソッドでオブジェクトにアクセスできるのであれば、これで十分です。