Possible en double:
What's the correct method to subclass a singleton class in Objective -C?design pattern Singleton
@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
Maintenant, si loin, si good.Actually, la partie init devrait être privé. Mais je m'en soucierai plus tard.
Maintenant, disons que je veux sous-classer la classe singleton. Comment dois-je le modifier?
permettent également de voir le code ici:
+(Singleton *)singleton
{
static Singleton * singleton;
if (singleton == nil)
{
singleton =[[Singleton alloc]init];
}
return singleton;
}
je modifier que pour
+(self *)singleton
{
static self * singleton;
if (singleton == nil)
{
singleton =[[self alloc]init];
}
return singleton;
}
Alors que la méthode singleton renvoient toujours la sous-classe plutôt que la classe parente
Eh bien, je a obtenu l'erreur de compilation
Maintenant je sais qu'une sous-classe est un "parent" . Donc, sous-classer un singleton n'a pas de sens.
Que se passe-t-il si je n'ai pas besoin d'un singleton strict?
Je veux
@interface CLASSA: singleton @interface ClassB: Singelton
à tous ont une méthode singleton qui se réfèrent à une seule instance de CLASSA et ClassB?
est donc votre question (et donc le titre) mieux déclaré que « Comment créer un singleton qui peut être sous-classé ? " ou "Comment sous-classer un singleton?"? – jball
Si vous le sous-classez, ce n'est plus un singleton ... un enfant IS-Un parent. – duffymo
duplication possible de [Quelle est la méthode correcte pour sous-classer une classe singleton dans Objective -C?] (Http://stackoverflow.com/questions/3394033/whats-the-correct-method-to-subclass-a-singleton-class -in-objectif-c). Aussi: http://stackoverflow.com/questions/1605083/how-do-i-make-other-classes-derive-from-a-singleton-class/1605127#1605127 –