- Objective-C 基础
- Objective-C - 首页
- Objective-C - 概述
- Objective-C - 环境设置
- Objective-C - 程序结构
- Objective-C - 基本语法
- Objective-C - 数据类型
- Objective-C - 变量
- Objective-C - 常量
- Objective-C - 运算符
- Objective-C - 循环
- Objective-C - 决策
- Objective-C - 函数
- Objective-C - 块
- Objective-C - 数字
- Objective-C - 数组
- Objective-C - 指针
- Objective-C - 字符串
- Objective-C - 结构体
- Objective-C - 预处理器
- Objective-C - Typedef
- Objective-C - 类型转换
- Objective-C - 日志处理
- Objective-C - 错误处理
- 命令行参数
- 高级 Objective-C
- Objective-C - 类与对象
- Objective-C - 继承
- Objective-C - 多态
- Objective-C - 数据封装
- Objective-C - 分类
- Objective-C - 模拟
- Objective-C - 扩展
- Objective-C - 协议
- Objective-C - 动态绑定
- Objective-C - 组合对象
- Obj-C - Foundation 框架
- Objective-C - 快速枚举
- Obj-C - 内存管理
- 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(@"The argument supplied is %s\n", argv[1]);
} else if( argc > 2 ) {
NSLog(@"Too many arguments supplied.\n");
} else {
NSLog(@"One argument expected.\n");
}
}
当上述代码编译并使用一个参数(例如 "testing")执行时,它会产生以下结果。
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 为 1;如果传递一个参数,则argc设置为 2。
您通过空格分隔所有命令行参数,但如果参数本身包含空格,则可以通过将它们放在双引号 "" 或单引号 '' 中来传递这些参数。让我们再次重写上面的示例,其中我们将打印程序名称,并将命令行参数放在双引号中:
#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")的参数执行时,它会产生以下结果。
2017-11-30 06:36:59.081 main[71010] Program name main 2017-11-30 06:36:59.082 main[71010] One argument expected.
广告