前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >研究一下未知参数的方法

研究一下未知参数的方法

作者头像
君赏
发布2018-08-31 16:15:19
6270
发布2018-08-31 16:15:19
举报
文章被收录于专栏:君赏技术博客君赏技术博客

最近要写一个小方法让组装字符串为一个数组进行下一步的传递,直接写进数组会因为可能数组为空决定写一个多参数的方法 判断就在里面进行判断

对于之前写过测试,但是只记得VA开头,今天再次看一下。

参考文献地址 http://blog.csdn.net/edonlii/article/details/8497704

va_list参考文献地址

va_start参考文献地址

va_copy参考文献地址

va_end参考文献地址

va_arg参考文献地址

va_list是接受除第一个参数之外的其余参数数组

取值的步骤如下

  1. 利用va_list初始化一个c语言的数组
  2. 使用va_start进行参数接受
  3. 利用va_arg进行超找参数 参数的类型必须和接受的类型一致 是c语言的类型
  4. 利用va_end进行结束查找

看一下下面的例子

代码语言:javascript
复制
- (void)vaList:(NSString *)str, ... {
    va_list list; // 接受其他的参数
    va_start(list, str); // 开始查找
    if (str) { // 判断第一个参数是否存在
        NSLog(@"%@",str); // 输出第一个参数
        id arg; // 其他参数 可能是C语言的其他类型
        while (YES) {
            arg = va_arg(list, id); // 赋值
            if (!arg) { // 如果不存在就退出循环
                break;
            }
            NSLog(@"%@",arg); // 输出其他参数
        }
    }
    va_end(list); // 结束查找 一定要写va_end
}

我们就可以调用这个函数了

代码语言:javascript
复制
[self vaList:@"1",@"2",@"3",nil];

输出

代码语言:javascript
复制
2016-12-15 14:12:32.634 GearBest[14179:276358] 1
2016-12-15 14:12:32.634 GearBest[14179:276358] 2
2016-12-15 14:12:32.635 GearBest[14179:276358] 3
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.12.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档