Argumenty wiersza polecenia

Możliwe jest przekazanie niektórych wartości z wiersza poleceń do programów Objective-C, gdy są one wykonywane. Te wartości są nazywanecommand line arguments i często są one ważne dla twojego programu, zwłaszcza gdy chcesz kontrolować swój program z zewnątrz, zamiast na sztywno zakodować te wartości wewnątrz kodu.

Argumenty wiersza poleceń są obsługiwane za pomocą argumentów funkcji main () gdzie argc odnosi się do liczby przekazanych argumentów, a argv[]jest tablicą wskaźników, która wskazuje na każdy argument przekazany do programu. Poniżej znajduje się prosty przykład, który sprawdza, czy jest jakikolwiek argument dostarczony z wiersza poleceń i podejmuje odpowiednie działania -

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

Kiedy powyższy kod jest kompilowany i wykonywany z jednym argumentem, powiedzmy „testowanie”, daje następujący wynik.

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

Gdy powyższy kod jest kompilowany i wykonywany z dwoma argumentami, powiedzmy testing1 i testing2, daje następujący wynik.

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

Gdy powyższy kod jest kompilowany i wykonywany bez przekazywania żadnego argumentu, daje następujący wynik.

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

Należy zauważyć że argv[0] zawiera nazwę samego programu i argv[1]jest wskaźnikiem do pierwszego podanego argumentu wiersza poleceń, a * argv [n] jest ostatnim argumentem. Jeśli nie podano żadnych argumentów, argc będzie równe jeden, w przeciwnym razie, jeśli przekażesz jeden argument, toargc jest ustawiony na 2.

Przekazujesz wszystkie argumenty wiersza poleceń oddzielone spacją, ale jeśli sam argument ma spację, możesz przekazać takie argumenty, umieszczając je w podwójnych cudzysłowach "" lub w apostrofach ''. Przepiszmy jeszcze raz powyższy przykład, w którym wypisujemy nazwę programu, a także przekażemy argument wiersza poleceń, umieszczając wewnątrz podwójne cudzysłowy -

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

Kiedy powyższy kod jest kompilowany i wykonywany z pojedynczym argumentem oddzielonym spacją, ale wewnątrz podwójnych cudzysłowów z napisem „Testing1 Testing2”, daje to następujący wynik.

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