Arguments de ligne de commande

Il est possible de transmettre certaines valeurs de la ligne de commande à vos programmes Objective-C lors de leur exécution. Ces valeurs sont appeléescommand line arguments et souvent, ils sont importants pour votre programme, en particulier lorsque vous voulez contrôler votre programme de l'extérieur au lieu de coder en dur ces valeurs à l'intérieur du code.

Les arguments de la ligne de commande sont traités à l'aide des arguments de la fonction main () où argc fait référence au nombre d'arguments passés, et argv[]est un tableau de pointeurs, qui pointe vers chaque argument passé au programme. Voici un exemple simple, qui vérifie s'il y a un argument fourni à partir de la ligne de commande et prend des mesures en conséquence -

#import <Foundation/Foundation.h>

int main( int argc, char *argv[] ) {
   if( argc == 2 ) {
      NSLog(@"The argument supplied is %s\n", argv[1]);
   } else if( argc > 2 ) {
      NSLog(@"Too many arguments supplied.\n");
   } else {
      NSLog(@"One argument expected.\n");
   }
}

Lorsque le code ci-dessus est compilé et exécuté avec un seul argument, disons "testing", il produit le résultat suivant.

2013-09-13 03:01:17.333 demo[7640] The argument supplied is testing

Lorsque le code ci-dessus est compilé et exécuté avec deux arguments, par exemple testing1 et testing2, il produit le résultat suivant.

2013-09-13 03:01:18.333 demo[7640] Too many arguments supplied.

Lorsque le code ci-dessus est compilé et exécuté sans passer d'argument, il produit le résultat suivant.

2013-09-13 03:01:18.333 demo[7640] One argument expected

Il faut noter que argv[0] contient le nom du programme lui-même et argv[1]est un pointeur vers le premier argument de ligne de commande fourni, et * argv [n] est le dernier argument. Si aucun argument n'est fourni, argc en sera un, sinon si vous passez un argument, alorsargc est fixé à 2.

Vous transmettez tous les arguments de la ligne de commande séparés par un espace, mais si l'argument lui-même a un espace, alors vous pouvez passer ces arguments en les plaçant entre guillemets doubles "" ou simples "". Réécrivons à nouveau l'exemple ci-dessus où nous afficherons le nom du programme et nous passerons également un argument de ligne de commande en mettant entre guillemets doubles -

#import <Foundation/Foundation.h>

int main( int argc, char *argv[] ) {
   NSLog(@"Program name %s\n", argv[0]);
 
   if( argc == 2 ) {
      NSLog(@"The argument supplied is %s\n", argv[1]);
   } else if( argc > 2 ) {
      NSLog(@"Too many arguments supplied.\n");
   } else {
      NSLog(@"One argument expected.\n");
   }
   
   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté avec un seul argument séparé par un espace mais entre des guillemets doubles indiquant "Testing1 Testing2", il produit le résultat suivant.

2017-11-30 06:36:59.081 main[71010] Program name main
2017-11-30 06:36:59.082 main[71010] One argument expected.