7
votes

Objectif C Méthode de mise en œuvre qui prend des disputes d'arguments

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: xxx

la déclaration de méthode pour cette La méthode est la suivante: xxx

Je n'arrive pas à faire une telle méthode. J'ai procédé à ce qui suit: xxx

Il donnera au service de nombreux arguments de la fonction "Dosométrage": "

Merci déjà. < / p>


0 commentaires

3 Réponses :


2
votes

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


0 commentaires

4
votes

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];


0 commentaires

12
votes

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];
}


4 commentaires

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é.