iOS宏定义里面多参数输入

前言

想实现类似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. 最终实现:


推荐阅读更多精彩内容

  • 关于宏 宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量...
    Cheriez阅读 649评论 0 4
  • iOS宏的经典用法Apple的习惯attribute iOS宏的经典用法1.常量宏、表达式宏 define kTa...
    reallychao阅读 3,318评论 0 0
  • http://www.open-open.com/lib/view/open1390651437117.html ...
    Xtuphe阅读 1,005评论 0 10
  • 前言:我们在发布App的时候,🍎要求我们取消所有的NSLog,大概是因为:1)输出日志是会大量损耗系统性能。2)输...
    大毛集团阅读 2,730评论 1 3
  • 夜莺2517阅读 127,194评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 5,923评论 1 6
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 7,647评论 28 53
  • 兔子虽然是枚小硕 但学校的硕士四人寝不够 就被分到了博士楼里 两人一间 在学校的最西边 靠山 兔子的室友身体不好 ...
    待业的兔子阅读 2,086评论 2 9