美文网首页
iOS可变参数和Format Function

iOS可变参数和Format Function

作者: 毅个天亮 | 来源:发表于2017-07-12 17:21 被阅读20次

函数中使用可变参数
使用NS_REQUIRES_NIL_TERMINATION 检查参数是否以nil 结尾,可变参数非nil 结尾时会造成崩溃。

- (void)sumup:(NSNumber *)num,... NS_REQUIRES_NIL_TERMINATION {
    NSNumber *rst = @0;
    if (num) {
        rst = @(rst.floatValue + num.floatValue);
        // 定义一个用于指向个数可变的参数列表指针
        va_list args;
        
        // 从num的下一个元素开始
        va_start(args, num);
        
        NSNumber *next = nil;
        // 循环获取参数列表中的参数
        while ((next = va_arg(args, NSNumber *))) {
            rst = @(rst.floatValue + next.floatValue);
        }
        // 清空参数列表,并置参数指针args无效
        va_end(args);
    }
    NSLog(@"%@",num);
}

使用format函数
类似NSStringxxxWithFormat: 系列方法
NS_FORMAT_FUNCTION(1, 2) 表示第一个是format string,第二个参数开始是对应format string 的参数列表

- (void)logFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2) {
    va_list args;
    va_start(args, format);
    NSString *rst = [[NSString alloc] initWithFormat:format arguments:args];
    va_end(args);
    NSLog(@"%@",rst);
}

相关文章

  • iOS可变参数和Format Function

    函数中使用可变参数使用NS_REQUIRES_NIL_TERMINATION 检查参数是否以nil 结尾,可变参数...

  • 日期格式化

    //参数一:时间;参数二:格式; function Format(now,mask) { var d ...

  • 函数的参数

    function.length 此函数校验参数个数 可变参数与arguments

  • iOS可变参数实现及原理剖析

    iOS可变参数实现及原理剖析 标签(空格分隔): iOS可变参数 iOS方法后面为什么有nil参数 你一定会时常见...

  • [swift 进阶]读书笔记-第六章:函数 C6P4 inou

    第六章:函数(function) 6.4 inout参数和可变方法(inout parameter and mut...

  • array大演练

    5.6新特性 ...可变参数数组 function array_zip(...$arrays) { return ...

  • C语言的可变参数

    C语言中有些函数使用可变参数,比如常见的int printf( const char* format, ...),...

  • C++<第七篇>:可变参数

    一、可变参数的简单写法 见如下代码: 这是一个最简单的可变参数的方法。 在传递实参时,可以在 function 中...

  • iOS可变参数

    一、可变参数是什么 想定义一个方法,但是不知道以后要用的时候想传几个参数进去,最经典的例子就是UIAlertVie...

  • 可变参数和不可变参数

    可变参数:列表,集合,字典 结论:函数传递可变参数时,会将包括索引在内的整体传递进去,当函数内部对参数进行修改时,...

网友评论

      本文标题:iOS可变参数和Format Function

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