va_list va_arg

查询后总结:在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无效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容