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.