Kommandozeilenargumente
Es ist möglich, einige Werte von der Befehlszeile an Ihre Objective-C-Programme zu übergeben, wenn diese ausgeführt werden. Diese Werte werden aufgerufencommand line arguments und oft sind sie für Ihr Programm wichtig, insbesondere wenn Sie Ihr Programm von außen steuern möchten, anstatt diese Werte innerhalb des Codes hart zu codieren.
Die Befehlszeilenargumente werden mit main () - Funktionsargumenten behandelt, wobei argc bezieht sich auf die Anzahl der übergebenen Argumente und argv[]ist ein Zeigerarray, das auf jedes an das Programm übergebene Argument verweist. Im Folgenden finden Sie ein einfaches Beispiel, in dem überprüft wird, ob über die Befehlszeile ein Argument angegeben wurde, und entsprechende Maßnahmen ergriffen werden.
#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");
}
}
Wenn der obige Code mit einem einzigen Argument kompiliert und ausgeführt wird, z. B. "Testen", wird das folgende Ergebnis erzielt.
2013-09-13 03:01:17.333 demo[7640] The argument supplied is testing
Wenn der obige Code mit zwei Argumenten kompiliert und ausgeführt wird, z. B. Test1 und Test2, wird das folgende Ergebnis erzielt.
2013-09-13 03:01:18.333 demo[7640] Too many arguments supplied.
Wenn der obige Code kompiliert und ausgeführt wird, ohne ein Argument zu übergeben, wird das folgende Ergebnis erzeugt.
2013-09-13 03:01:18.333 demo[7640] One argument expected
Es sollte angemerkt werden, dass argv[0] enthält den Namen des Programms selbst und argv[1]ist ein Zeiger auf das erste angegebene Befehlszeilenargument, und * argv [n] ist das letzte Argument. Wenn keine Argumente angegeben werden, ist argc eins, andernfalls, wenn Sie ein Argument übergeben, dannargc ist auf 2 eingestellt.
Sie übergeben alle durch ein Leerzeichen getrennten Befehlszeilenargumente. Wenn das Argument selbst jedoch ein Leerzeichen enthält, können Sie solche Argumente übergeben, indem Sie sie in doppelte Anführungszeichen oder einfache Anführungszeichen setzen. Lassen Sie uns das obige Beispiel noch einmal neu schreiben, wobei wir den Programmnamen drucken und ein Befehlszeilenargument übergeben, indem wir doppelte Anführungszeichen setzen -
#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;
}
Wenn der obige Code mit einem durch Leerzeichen getrennten Argument kompiliert und ausgeführt wird, aber in doppelten Anführungszeichen "Testing1 Testing2" steht, wird das folgende Ergebnis erzielt.
2017-11-30 06:36:59.081 main[71010] Program name main
2017-11-30 06:36:59.082 main[71010] One argument expected.