J'ai lu plusieurs articles sur la syntaxe de la méthode Objective-C, mais je suppose que je ne comprends pas plusieurs noms pour une méthode.
J'essaye de créer une méthode appelée getBusStops
avec NSString
et des NSTimeInterval
paramètres et un type de retour de NSMutableArray
. C'est ainsi que j'ai construit la méthode mais il y a évidemment des erreurs à 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
forTime
sert?Oui; la syntaxe de la méthode Objective-C est comme ceci pour plusieurs raisons; l'un de ceux-ci consiste à indiquer clairement quels sont les paramètres que vous spécifiez. Par exemple, si vous ajoutez un objet à un
NSMutableArray
à un certain index, vous le feriez en utilisant la méthode:Cette méthode est appelée
insertObject:atIndex:
et il est clair qu'un objet est inséré à un index spécifié.En pratique, ajouter une chaîne "Hello, World!" à l'index 5 d'un
NSMutableArray
appeléarray
serait appelé comme suit:Cela réduit également l'ambiguïté entre l'ordre des paramètres de la méthode, garantissant que vous passez d'abord le paramètre d'objet, puis le paramètre d'index. Cela devient plus utile lors de l'utilisation de fonctions qui acceptent un grand nombre d'arguments et réduit les erreurs lors de la transmission des arguments.
De plus, la convention de dénomination des méthodes est telle que Objective-C ne prend pas en charge la surcharge; cependant, si vous souhaitez écrire une méthode qui effectue le même travail, mais prend des types de données différents, cela peut être accompli; prenons, par exemple, la
NSNumber
classe; cela a plusieurs méthodes de création d'objets, y compris:+ (id)numberWithBool:(BOOL)value;
+ (id)numberWithFloat:(float)value;
+ (id)numberWithDouble:(double)value;
Dans un langage tel que C ++, vous surchargeriez simplement la méthode number pour permettre à différents types de données d'être passés en argument; cependant, en Objective-C, cette syntaxe permet d'implémenter plusieurs variantes différentes de la même fonction, en changeant le nom de la méthode pour chaque variante de la fonction.
la source
Le texte avant chaque paramètre fait partie du nom de la méthode. D'après 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é en: s et les arguments apparaissent après le: seg
la source
pour créer la méthode:
pour appeler la méthode:
la source
moi:
comme dans d'autres langages, nous utilisons la syntaxe suivante void
add(int one, int second)
mais la manière d'attribuer des argumentsOBJ_c
est différente de celle décrite ci-dessusla source