Argumentos de linha de comando

É possível passar alguns valores da linha de comando para seus programas Objective-C quando eles são executados. Esses valores são chamadoscommand line arguments e muitas vezes eles são importantes para seu programa, especialmente quando você deseja controlar seu programa de fora, em vez de codificar permanentemente esses valores dentro do código.

Os argumentos de linha de comando são tratados usando argumentos de função main () onde argc refere-se ao número de argumentos passados ​​e argv[]é uma matriz de ponteiro, que aponta para cada argumento passado para o programa. A seguir está um exemplo simples, que verifica se há algum argumento fornecido a partir da linha de comando e age de acordo -

#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");
   }
}

Quando o código acima é compilado e executado com um único argumento, digamos "teste", ele produz o seguinte resultado.

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

Quando o código acima é compilado e executado com dois argumentos, digamos, testing1 e testing2, ele produz o seguinte resultado.

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

Quando o código acima é compilado e executado sem passar nenhum argumento, ele produz o seguinte resultado.

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

Deve-se notar que argv[0] contém o nome do próprio programa e argv[1]é um ponteiro para o primeiro argumento da linha de comando fornecido e * argv [n] é o último argumento. Se nenhum argumento for fornecido, argc será um, caso contrário, se você passar um argumento, entãoargc é definido como 2.

Você passa todos os argumentos da linha de comando separados por um espaço, mas se o próprio argumento tiver um espaço, você pode passar esses argumentos colocando-os entre aspas duplas "" ou aspas simples ''. Vamos reescrever o exemplo acima novamente, onde imprimiremos o nome do programa e também passaremos um argumento de linha de comando colocando aspas duplas -

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

Quando o código acima é compilado e executado com um único argumento separado por espaço, mas entre aspas duplas diga "Testing1 Testing2", ele produz o seguinte resultado.

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