美文网首页
ios开发-Object-C可变参数函数

ios开发-Object-C可变参数函数

作者: 小地 | 来源:发表于2016-06-17 14:56 被阅读145次

    这个函数主要是用来计算用户传进来的数值之和。

    - (int)sum:(int)num, ...
    { 
          int result = num; 
          int objNum; 
          va_list arg_list;
          va_start(arg_list, num);
          while ((objNum = va_arg(arg_list, int))) 
          { 
                result += objNum;
          } 
          va_end(arg_list); 
          return result;
    }
    

    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 引用的函数中正常返回。

    使用方法

    使用方法也很简单,在可变参数里,所有参数均用逗号隔开。

    NSLog(@"%d", [self sum:1, 34, nil]);
    

    注意事项

    使用的时候,可变参后最后面加一个nil值,这样是代表结束的意思。就像UIAlertView初始化的那样,它一开始不知道你有多少个Button,你可以自由地往里加Button,最后也是由一个nil结束,所以两个是一样的道理。

    注意点

    1)当我们要创建一个可变参数函数时,必须把省略号( ... )放到参数列表后面,同时也只能拥有一个这样的格式,因为我们不能定义两个可变的参数。

    2)当我们需要读取 可变参数列表 时,必须先指定一个变数 va_list ,然后使用宏 va_start 、va_arg、va_end 来获取。

    相关文章

      网友评论

          本文标题:ios开发-Object-C可变参数函数

          本文链接:https://www.haomeiwen.com/subject/wmjvdttx.html