iOS宏定义里面多参数输入

作者: freesan44 | 来源:发表于2021-03-25 09:56 被阅读0次

前言

想实现类似NSLog那样支持多参数,和格式化等逻辑处理的宏

实现

  1. 字符串格式化
+(NSString*)getFormatStr:(NSString*)str, ...
{
    if ([str isKindOfClass:[NSString class]]) {
        va_list args;
        va_start(args, str);
        NSString *result = [[NSString alloc] initWithFormat:str arguments:args];
        va_end (args);
        return result;
    }
    else
    {
        return [NSString stringWithFormat:@"%@",str];
    }
}
  1. 宏里面实现多参数输入
#define kGetFormatStr(Msg, ... ) [self getFormatStr:(Msg), ##__VA_ARGS__]

注意:##VA_ARGS 是必输的,不然会出现上一个调用宏的数据会污染下一个方法的数据。
污染数据的例子:

  1. 最终实现:


相关文章

  • iOS宏定义里面多参数输入

    前言 想实现类似NSLog那样支持多参数,和格式化等逻辑处理的宏 实现 字符串格式化 宏里面实现多参数输入 注意:...

  • IOS NSLog宏定义

    IOS NSLog宏定义 标签(空格分隔): IOS IOS NSLog宏定义 宏定义NSLog方法,不用加";"...

  • iOS - 《系统宏》宏,预处理命令

    在ios中使用预处理命令[C语言的特殊命令] 1.宏定义 #define 与 #undef 2.带参数宏定义 3....

  • 5月31

    今天学习了宏定义 宏定义分为:不带参数的宏定义和带参数的宏定义,不占用任何内存空间,宏定义时不加分号。 #defi...

  • 精解C语言预处理命令(三)之“宏”的用法二

    关于C语言带参数的宏定义中的参数 C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实...

  • 宏和条件编译的结合使用

    宏 宏定义 有参数 无参数 1.无参数的宏 语法: #define 宏名 宏值 #define MM 10 //...

  • Day12

    预处理指令 宏定义 基本格式 不带参数的宏定义 带参数的宏定义 宏定义的作用域 条件编译 基本格式 应用场景用来替...

  • C++常用的宏

    可变参数列表 VA_ARGS用来表示可变参数列表 宏里面预设的变量 ANSI C标准中有几个重用标准预定义宏:LI...

  • 【C/C++】宏(macro)定义与使用

    文章结构如下: 宏的定义 宏的替换与代码展开 宏的替换产生的问题 获取宏参数名称 宏参数的结合 宏的取消 宏定义的...

  • iOS 和 js 交互

    js调用iOS代码 1、iOS定义方法 2、实现方法 3、js端实现方法 js给iOS传参数 1、单个参数 2、多...

网友评论

    本文标题:iOS宏定义里面多参数输入

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