可能重复:
What's the correct method to subclass a singleton class in Objective -C?
@implementation Singleton
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
+(Singleton *)singleton
{
static Singleton * singleton;
if (singleton == nil)
{
singleton =[[Singleton alloc]init];
}
return singleton;
}
@end
现在到目前为止一直很好。实际上,init部分应该是私有的。但是我稍后会担心的。
现在,我想要将单例类子类化。我应该如何修改它?
另外,让我们看看这里的代码:
+(Singleton *)singleton
{
static Singleton * singleton;
if (singleton == nil)
{
singleton =[[Singleton alloc]init];
}
return singleton;
}
我应该将其修改为
+(self *)singleton
{
static self * singleton;
if (singleton == nil)
{
singleton =[[self alloc]init];
}
return singleton;
}
这样单例方法总是返回子类而不是父类
我收到了编译错误
现在我知道子类是“父”。因此,对单例进行子类化是没有意义的。
如果我不需要严格的单身人士怎么办。
我想要
@interface classA:singleton @interface classB:singelton
所有人都有一个单例方法,引用classA和classB的单个实例?
答案 0 :(得分:2)
正如duffymo在他的评论中提到的,对单身人士进行细分是没有意义的。让我试着解释一下。
假设您创建了两个不同的子类,这些子类都继承自您的单例基类。 当你实例化它们时,只有第一个实际上会创建一个实例(因为这是一个单例的点)。第二个子类实例不会被实例化。 但是,子类中添加的功能将在每个单独的子类中实例化。你可能会看到它变得混乱: - )
希望这会有所帮助......
此致