189 votes

Comment passer plusieurs paramètres en Objective-C ?

J'ai lu plusieurs post sur Objective-C méthode de syntaxe, mais je suppose que je ne comprends pas plusieurs noms pour une méthode.

Je suis en train de créer une méthode appelée getBusStops avec NSString et NSTimeInterval paramètres et le type de retour d' NSMutableArray. C'est comment j'ai construit de la méthode, mais il devient évidemment des erreurs lors de l'exécution:

- (NSMutableArray *)getBusStops:(NSString *)busStop
                                (NSTimeInterval *)timeInterval;

J'ai vu un autre exemple avec une méthode:

-(NSInteger)pickerView:(UIPickerView *)pickerView
            numberOfRowsInComponent:(NSInteger)component

Je ne comprends pas pourquoi cette méthode a un nom de méthode pour chaque paramètre. Dois-je faire la même chose avec quelque chose comme:

- (NSMutableArray *)getBusStops:(NSString *)busStop
                        forTime:(NSTimeInterval *)timeInterval

164voto

E.M. Points 2407

Vous devez délimiter chaque nom de paramètre avec un « : » à tout le moins. Techniquement, le nom est facultatif, mais il est recommandé pour une meilleure lisibilité. Ainsi, vous pourriez écrire :

ou ce que vous avez suggéré :

126voto

Terry Wilcox Points 6999

Objective-C n’est pas des paramètres nommés, que tout ce qui est sur le côté gauche d’un signe deux-points dans le nom de méthode. Par exemple,

est le nom de la méthode. Le nom est entrecoupée, il peut donc être plus descriptive. Vous pouvez simplement nommer votre méthode

mais qui ne vous dit pas beaucoup sur le deuxième paramètre.

74voto

Alex Rozanski Points 26107

Oui; l'Objective-C méthode de la syntaxe, c'est comme cela pour un couple de raisons, l'une d'elles est de sorte qu'il est clair que les paramètres que vous spécifiez. Par exemple, si vous ajoutez un objet à un NSMutableArray , à un certain indice, vous le feriez à l'aide de la méthode:

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

Cette méthode est appelée insertObject:atIndex: et il est clair qu'un objet est inséré à un index spécifié.

Dans la pratique, l'ajout d'une chaîne de caractères "Hello, World!" à l'indice 5 de l' NSMutableArray appelés array serait appelé comme suit:

NSString *obj = @"Hello, World!";
int index = 5;

[array insertObject:obj atIndex:index];

Ceci permet également de réduire l'ambiguïté entre l'ordre des paramètres de la méthode, en s'assurant que vous passez le paramètre de l'objet premier, puis le paramètre index. Cela devient encore plus utile lorsque vous utilisez des fonctions qui prennent un grand nombre d'arguments, et réduit l'erreur en passant les arguments.

En outre, la méthode de la convention de nommage est telle parce qu'Objective-C ne supporte pas la surcharge; toutefois, si vous voulez écrire une méthode qui fait le même travail, mais prend des différents types de données, ce qui peut être accompli; prenez, par exemple, l' NSNumber de la classe; ce qui a plusieurs objet des méthodes de création, y compris:

  • + (id)numberWithBool:(BOOL)value;
  • + (id)numberWithFloat:(float)value;
  • + (id)numberWithDouble:(double)value;

Dans un langage comme C++, il vous suffit de surcharger la méthode du numéro de permettre à différents types de données pour être passé comme argument; toutefois, en Objective-C, cette syntaxe permet plusieurs variantes de la même fonction à être mis en œuvre, en changeant le nom de la méthode pour chaque variante de la fonction.

24voto

sigjuice Points 9166

Le texte avant chaque paramètre fait partie du nom de la méthode. Dans votre exemple, le nom de la méthode est en fait

Chacun : représente un argument. Dans un appel de méthode, le nom de la méthode est divisé à la : s et arguments apparaissent après la : s. p. ex.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X