我使用以下代码创建单独的子类的子类:
+(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/