简单介绍一下这个,下面会有详细的用法和解释、
大致含义
: 一个可变参数函数是指一个函数拥有不定的参数,即为一个函数可接收多个参数。有时会遇到一些算术问题需要用到,比如是计算传入参数的总和,字符串的连接或是其它操作过程,在 Objective-C 里也经常使用,最经典的就是 NSLog( C 为 printf ) ,它可以指定格式的输出,格式化输出的内容.
当然,不定参数,你也可以使用数组代替。废话不多说,直接上代码开干了….
1 | - (void)print:(NSString *)firstArg, ... NS_REQUIRES_NIL_TERMINATION { |
下面就是来解释各个方法和参数的含义
va_list
: 用来保存宏va_start
、va_arg
和va_end
所需信息的一种类型。为了访问变长参数列表中的参数,必须声明va_list
类型的一个对象va_start
: 访问变长参数列表中的参数之前使用的宏,它初始化用va_list声明的对象,初始化结果供宏va_arg
和va_end
使用va_arg
: 展开成一个表达式的宏,该表达式具有变长参数列表中下一个参数的值和类型。每次调用va_arg
都会修改,用va_list
声明的对象从而使该对象指向参数列表中的下一个参数va_end
: 该宏使程序能够从变长参数列表用宏 va_start 引用的函数中正常返回NS_REQUIRES_NIL_TERMINATION
: 是一个宏,用于编译时非nil结尾的检查
使用注意
- 在可变参数里,所有参数均用逗号隔开
- 参数结尾必须加上nil,表示参数结束