美文网首页君赏博客
研究一下未知参数的方法

研究一下未知参数的方法

作者: 君赏 | 来源:发表于2016-12-15 14:16 被阅读9次

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

    对于之前写过测试,但是只记得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进行结束查找

    看一下下面的例子

    - (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
    }
    

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

    [self vaList:@"1",@"2",@"3",nil];
    

    输出

    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
    

    相关文章

      网友评论

        本文标题:研究一下未知参数的方法

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