可变参数va

    xiaoxiao2026-04-07  7

    在UIAlertView的init方法中的otherButtonTitles:(NSString *)otherButtonTitles, …中会遇到可变参数。当重写该方法的时候需要使用到va_list

    + (void)functionName:(NSString*)otherString, ...{ NSMutableArray *titleList = nil; if (otherString) { titleList = [[NSMutableArray alloc] init]; [titleList addObject:otherString]; va_list list; va_start(list, otherString); NSString *title = nil; while(YES) { title = va_arg(list, NSString *); if (title == nil) { break;//结束 } [titleList addObject:title]; } va_end(list); } }

    百科解释:

    va_list list:定义一个指向个数可变的参数列表指针; va_start(list, otherString):otherString为第一个参数,也就是最右边的已知参数,这里就是获取第一个可选参数的地址.使参数列表指针指向函数参数列表中的第一个可选参数,函数参数列表中参数在内存中的顺序与函数声明时的顺序是一致的。 va_arg(list, NSString *):返回参数列表中指针所指的参数,返回类型为NSString,并使参数指针指向参数列表中下一个参数。 a_end(list):清空参数列表,并置参数指针args无效。
    转载请注明原文地址: https://ju.6miu.com/read-1308585.html
    最新回复(0)