我使用以下代码创建单独的子类的子类:

+(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;

如果将它们单独使用,它们将完美工作,并按预期启动其类。但是,如果一起使用,它们都采用生成的第一个单例的类。

我如何更改此代码,以使子类都是自己的单例?

最佳答案

看来您复杂的构造并没有使dispatch_once有点混乱。
根据要求(毕竟这就是dispatch_once的用途),sharedManager仅分配一次。

关于iphone - 单例的子类不能一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16812268/

10-10 20:40