1

このコードを使用して、個別にシングルトンであるサブクラスを作成します。

+(id)sharedManager {

    Class class = [self class];

    static SPPanelManager *sharedManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedManager = [[class alloc] init];
    });

    return sharedManager;
}

そして、各サブクラスの .h には、クラスの名前が戻り値として含まれています。

+(SPWeatherManager *)sharedManager;

これらを個別に使用すると、完全に機能し、期待どおりにクラスを起動します。ただし、一緒に使用すると、生成された最初のシングルトンのクラスがすべて取得されます。

サブクラスがすべて独自のシングルトンになるように、このコードを変更するにはどうすればよいですか?

4

2 に答える 2

2

あなたの複雑な構成は、dispatch_once を少し混乱させなかったようです。
要求どおり (つまり、これが dispatch_once の目的です)、sharedManager は 1 回だけ割り当てられます。

于 2013-05-29T12:50:54.947 に答える