Hee
Est-ce que quelqu'un sait comment mettre en œuvre une méthode dans l'objectif C qui prendra une gamme d'arguments comme paramètre tel que: p> la déclaration de méthode pour cette La méthode est la suivante: p> Je n'arrive pas à faire une telle méthode. J'ai procédé à ce qui suit: p> Il donnera au service de nombreux arguments de la fonction "Dosométrage": " p> Merci déjà. P> < / p>
3 Réponses :
Je pense que vous êtes après une fonction variadique. Voici la documentation d'Apple: http://developer.apple.com/library/mac /qa/qa2005/qa1405.html p>
Les arguments multiples (également appelé tableau de contrôle) ne peuvent venir qu'à la fin d'une déclaration de méthode. Votre méthode code> DOSOMOATHIX CODE> ressemblerait à ceci comme suit:
[SomeClass doNumberOfTimes:2 withStrings:@"A", @"B", nil];
L'ellipsis (...) est hérité de c; Vous ne pouvez l'utiliser que comme argument final dans un appel (et vous avez manqué la virgule correspondante dans votre exemple). Donc, dans votre cas, vous voudrez probablement:
+ (NSString *)doThis:(SEL)selector makeStringOfThat:(NSString *)format, ... { // do this [self performSelector:selector]; // make string of that... // get the argument list va_list argumentList; va_start(argumentList, format); // pass it verbatim to a suitable method provided by NSString NSString *string = [[NSString alloc] initWithFormat:format arguments:argumentList]; // clean up va_end(argumentList); // and return, as per the synthetic example return [string autorelease]; }
Existe-t-il également un moyen de prendre des ellipsis comme paramètre et puis passer est sur une autre méthode?
@Mats: Vous obtenez normalement la Va_List et transmettez-le sur (par conséquent, par exemple VPRINTF ou Nstring -IlitwithFormat: arguments :). Vous ne pouvez pas simplement transmettre tout ce qui est décrit par les ellipsis (comme dans, avoir une fonction d'ellipsis appeler un autre) puisque le temps d'exécution C n'est pas nécessaire de savoir combien de choses y sont de choses et ne peuvent donc pas la copier.
Pouvez-vous donner un exemple de code avec passer une ellipsis à une deuxième méthode Objective-C?
Vous ne pouvez pas réellement passer les ellipsis. Vous devez passer la Va_List. Exemple ajouté.