Initialiseur désigné
enzyme2006
Membre
Bonjour,
L'initialiseur désigné de chaque classe doit invoquer l'initialiseur désigné de sa superclasse,
mais dans le code ci-dessous :
- (id)initTextCell:(NSString *)aString
// Initialiseur désigné redéfini.
{
self = [super initTextCell:aString];
if(nil != self)
{
[self setBarValue: 1.0f];
[self setFont:[NSFont labelFontOfSize:[NSFont labelFontSize]]];
}
return self;
}
- (id)initTextCell:(NSString *)aString
// Initialiseur désigné redéfini.
{
self = [super init];
if(nil != self)
{
[self initTextCell:(NSString *)aString: @â€â€];
}
return self;
}
Je ne saisi pas la différence entre :
self = [super initTextCell:aString];
et
self = [super init];
Les deux classes étant dérivées de NSObject
Hors je ne comprends pas le lien avec la super classe dans le 1er cas et je suppose que "init" du deuxième cas faire référence à - (id) init de NSObject ?
Merci à tous.
Enzyme
PS : extrait de code du livre ; Les design pattern de Cocoa.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
1) Déjà , initWithText est défini 2 fois... ?!
2) Dans la 2ème définition, tu as une erreur de syntaxe, ton appel à initTextCell: ne veut rien dire / ne ressemble à rien
3) Tu appelles 2 méthodes d'init ([super init] et [self initTextCell:] dans cette 2ème implémentation. Il ne faut jamais initialiser 2 fois un même objet.
Bref, ce code et en particulier ta 2ème implémentation de initTextCell: ne veut vraiment rien dire.
Merci AliGator et Céroce, je viens de comprendre l'implication de NSObject dans le cas de l'initialisation.
Encore Merci.