Je suis en train de déboguer un exemple de fragment de tutoriel et je suis confus au sujet du remplacement des paramètres.Les paramètres de substitution ne sont pas appelés dans Objective-C
Je déclare et passer outre comme indiqué ici:
//
// PolygonShape.h
//
@interface PolygonShape : NSObject
{
int numberOfSides;
}
@property int numberOfSides;
//
// PolygonShape.m
//
@synthesize numberOfSides;
// custom setter.
- (void) setnumberOfSides:(int) i
{
if ((i > minimumNumberOfSides) && (i <= maximumNumberOfSides))
numberOfSides = i;
else
NSLog (@"Number of sides outside limits:\n You entered %d, limits are min.:%d, max.:%d",
i, minimumNumberOfSides+1, maximumNumberOfSides);
}
//
// main.m
//
poly = [[PolygonShape alloc] init];
poly.numberOfSides = 2;
[poly setnumberOfSides:2];
Donc, ma pensée supposée ici est que, depuis que je « override » le poseur synthétisé pour numberOfSides
, puis poly.numberOfSides = 2;
aurais appelé ma fonction (void) setnumberOfSides:(int) i
. Mais à la place, la seule façon dont cette fonction est appelée est quand je le fais explicitement [poly setnumberOfSides:2];
Je ne comprends pas. Quel est le point de passer outre alors?
Ou plus probablement, qu'est-ce que je fais mal? ;)
Les noms de méthode sont sensibles à la casse. –
Donc, même si ma variable est 'numberOfSides', (small 'n' pour "number"), la fonction de synthèse * la transforme en un 'N' majuscule pour son propre usage. agréable. :/ –
Non, le @synthesize change le cas pour être exactement en ligne avec la règle de camel qui est cohérente dans l'ensemble de Cocoa. 'setnumberOfSides:' n'a jamais eu de sens. – bbum