0

スーパークラスでは、「sharedClient」というメソッドを定義しました

+ (id)sharedClient
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc]init];
    });
    return instance;
}

このメソッドでは、オブジェクトを一度ディスパッチしたいと考えています。次に、superClass の 2 つのサブクラスを定義しました。クラス A とクラス B。

A の sharedClient メソッドを呼び出した後、A の sharedClient があり、B の sharedClient を呼び出した後、B のオブジェクトがあることを願っています。しかし、A と B が両方のメソッドを呼び出した場合、常に以前に呼び出されたクラスの 1 つのオブジェクトになります。</p>

4

1 に答える 1

1

dispatch_onceその名前が示すとおりのことを行うため、alloc は 1 つだけで、インスタンスへの割り当ては 1 つだけです。これは、最初に呼び出されたクラスのインスタンスになります。

本当にシングルトンが必要な場合は、おそらく 3 つのクラスは必要ありません。たぶん、それぞれの単一のインスタンスが必要ですか? 次に、各ファイルには静的インスタンス変数があり、各クラスには独自の sharedClient の実装があります。

于 2013-09-30T03:59:13.257 に答える