个性化阅读
专注于IT技术分析

Objective-C命令行参数 – Objective-C开发教程

上一章Objective-C开发教程请查看:Objective-C错误处理

在执行某些值时,可以将它们从命令行传递给Objective-C程序,这些值称为命令行参数,很多时候它们对程序很重要,特别是当你希望从外部控制程序而不是在代码中硬编码这些值时。

命令行参数使用main()函数参数处理,其中argc表示传递的参数的数量,argv[]是一个指针数组,指向传递给程序的每个参数。下面是一个简单的例子,它检查命令行是否提供了任何参数,并相应地采取操作。

#import <Foundation/Foundation.h>

int main( int argc, char *argv[] ) {
   if( argc == 2 ) {
      NSLog(@"提供的参数是 %s", argv[1]);
   } else if( argc > 2 ) {
      NSLog(@"提供了很多参数.");
   } else {
      NSLog(@"一个参数.");
   }
}

当使用单个参数(如“testing”)编译并执行上述代码时,将产生以下结果。

提供的参数是 testing

当使用两个参数(比如testing1和testing2)编译和执行上述代码时,它会产生以下结果。

提供了很多参数.

当编译并执行上述代码而不传递任何参数时,将产生以下结果。

一个参数.

需要注意的是argv[0]保存了程序本身的名称,argv[1]是指向第一个提供的命令行参数的指针,*argv[n]是最后一个参数。如果没有提供参数,argc将是一个,否则如果传递一个参数,则argc设置为2。

传递所有用空格分隔的命令行参数,但是如果参数本身有空格,则可以通过将它们放在双引号“”或单引号内来传递这些参数。让我们再次重写上面的例子,我们将打印程序名,并通过在双引号内传递命令行参数:

#import <Foundation/Foundation.h>

int main( int argc, char *argv[] ) {
   NSLog(@"程序名称 %s", argv[0]);
 
   if( argc == 2 ) {
      NSLog(@"提供的参数是 %s", argv[1]);
   } else if( argc > 2 ) {
      NSLog(@"很多参数.");
   } else {
      NSLog(@"一个参数.");
   }
   
   return 0;
}
赞(0)
未经允许不得转载:srcmini » Objective-C命令行参数 – Objective-C开发教程

评论 抢沙发

评论前必须登录!