Учебники

Аргументы командной строки

Можно передать некоторые значения из командной строки программам Objective-C при их выполнении. Эти значения называются аргументами командной строки, и часто они важны для вашей программы, особенно когда вы хотите управлять своей программой извне, а не жестко кодировать эти значения внутри кода.

Аргументы командной строки обрабатываются с помощью аргументов функции main (), где argc ссылается на количество переданных аргументов, а argv [] — массив указателей, который указывает на каждый аргумент, переданный программе. Ниже приведен простой пример, который проверяет, есть ли какой-либо аргумент из командной строки, и предпринимает соответствующие действия:

Live Demo

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

Когда приведенный выше код компилируется и выполняется с одним аргументом, скажем, «тестирование», он дает следующий результат.

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

Когда приведенный выше код компилируется и выполняется с двумя аргументами, скажем, testing1 и testing2, он дает следующий результат.

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

Когда приведенный выше код компилируется и выполняется без передачи аргумента, он дает следующий результат.

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

Следует отметить, что argv [0] содержит имя самой программы, а argv [1] — указатель на первый предоставленный аргумент командной строки, а * argv [n] — последний аргумент. Если аргументы не предоставлены, argc будет один, иначе, если вы передадите один аргумент, тогда argc будет установлен в 2.

Вы передаете все аргументы командной строки, разделенные пробелом, но если сам аргумент имеет пробел, вы можете передать такие аргументы, заключив их в двойные кавычки «» или одинарные кавычки «. Давайте еще раз напишем приведенный выше пример, где мы напечатаем имя программы, а также передадим аргумент командной строки, заключив в двойные кавычки —

Live Demo

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

Когда вышеприведенный код компилируется и выполняется с одним аргументом, разделенным пробелом, но внутри двойных кавычек с надписью «Testing1 Testing2», он дает следующий результат.