zoukankan      html  css  js  c++  java
  • OC方法可变参数

    OC可变参数:

    - (void)executeSql:(NSString *)sql,... __attribute__((sentinel)){
        
        NSMutableString *result = [NSMutableString stringWithFormat:@"%@",sql];
        
        va_list params;//定义一个指向个数可变的参数列表指针
        va_start(params,sql);//va_start  得到第一个可变参数地址
        NSString *arg;
        while((arg = va_arg(params, NSString *))){ //va_arg 指向下一个参数地址
            if(arg){
                [result appendFormat:@" %@",arg];
            }
        }
        va_end(params);//置空
        
        NSLog(@"%@",result);
        
    }
    

     

    调用:
    [self executeSql:@"select * from test",@"where" ,@"age =",@"12",nil];
    

    使用__attribute__((sentinel))语法可以告诉编译器这是一个需要哨兵参数的函数。它的作用就是告诉函数没有参数了。这也是为什么ObjC[NSArray arrayWithObjects: ...,nil]最后必须以nil参数结尾的原因

  • 相关阅读:
    p3159 [CQOI2012]交换棋子
    三分法
    p2805 [NOI2009]植物大战僵尸
    p2604 [ZJOI2010]网络扩容
    p1129 [ZJOI2007]矩阵游戏
    有趣与愉快-------罗辑思维整理
    张小龙的书单
    会议
    使用CCProxy代理遇到的问题
    关于看书
  • 原文地址:https://www.cnblogs.com/HJiang/p/7462207.html
Copyright © 2011-2022 走看看